Compare commits

...

1945 Commits

Author SHA1 Message Date
9e97699e6c fix: seek 2023-11-03 10:09:40 +09:00
a810621762 feat: http api 2023-11-03 10:09:40 +09:00
a41db79c35 fix(deps): fix pnpm.overrides 2023-11-03 10:09:04 +09:00
87786d9aef chore(deps): update dependency node-gyp to v10.0.1 2023-11-03 09:57:24 +09:00
22f5866050 chore(deps): update dependency @electron/universal to v1.4.4 2023-11-03 09:57:12 +09:00
04894fbcf5 chore(deps): update dependency node-gyp to v10 2023-11-02 12:51:52 +09:00
c17c624ba4 chore(deps): bump deps 2023-11-02 12:48:44 +09:00
bfe7249df8 Add Homebrew cask install option for MacOS. (#1357) 2023-11-02 09:42:13 +09:00
13c570efe9 fix: use node-fetch v3 instead of v2
- auto-change: moved from devDependencies to npx
2023-10-29 06:17:33 +09:00
b299846f0f fix: fix node-gyp version 2023-10-29 06:09:47 +09:00
59e9289d27 remove: remove patch-package
- see https://github.com/LuanRT/YouTube.js/pull/509
2023-10-29 06:05:15 +09:00
8dc29caa1b chore(actions): update setup-node v3 to v4 2023-10-29 06:02:03 +09:00
7fedf88654 chore(deps): bump deps version
- rollup: 4.1.4 to 4.1.5
- node-gyp: 9.4.0 to 9.4.1
- @cliqz/adblocker: 1.26.8 to 1.26.9
- youtubei.js: 6.4.1 to 7.0.0
- pnpm: 8.9.2 to 8.10.0
2023-10-29 05:54:43 +09:00
5da0202425 Update changelog for v2.2.0 2023-10-26 17:16:26 +00:00
6288d0b171 Bump version to 2.2.0 2023-10-27 02:01:44 +09:00
4248d20e8e bump deps 2023-10-25 16:46:59 +09:00
0b413492ad feat(ambient-mode): add config for ambient-mode plugin (#1349) 2023-10-25 15:37:51 +09:00
dc73561c8a Update changelog for v2.1.3 2023-10-22 15:50:12 +00:00
949a2f6428 Bump version to 2.1.3 2023-10-23 00:35:10 +09:00
bceaa05197 fix(store): fix listenAlong statement 2023-10-23 00:29:59 +09:00
776cdac30d feat(discord): rename Listen Along to Play on YTM
resolve #1341
2023-10-23 00:27:43 +09:00
4333891cca chore(deps): bump deps 2023-10-23 00:19:42 +09:00
8a89bbccf7 fix: fixed bugs in downloader (#1342) 2023-10-23 00:19:01 +09:00
fa4c69d228 Update changelog for v2.1.2 2023-10-19 13:55:04 +00:00
c25def8901 Bump version to 2.1.2 2023-10-19 22:39:14 +09:00
284a59b721 fix: fix unresponsive (fix #1325) 2023-10-19 22:35:32 +09:00
5fcba8619a feat(in-app-menu): add an option to hide the window controls (#1335) 2023-10-19 22:34:18 +09:00
f3cd759276 fix: fixed an issue where the album name was missing (#1334) 2023-10-19 21:45:46 +09:00
9d3981e361 chore: Update build.yml 2023-10-19 21:33:54 +09:00
787326948b chore: making actions more efficient 2023-10-19 09:51:31 +09:00
779251933c chore(deps): update dependency electron to v27.0.1 (#1331) 2023-10-19 09:42:41 +09:00
1efe835c69 fix: fixed an issue where only the first 100 songs in a playlist were downloaded (#1329) 2023-10-19 05:40:05 +09:00
5702978227 chore(deps): update dependencies 2023-10-18 18:18:28 +09:00
fa3d742838 chore(deps): update dependency @typescript-eslint/eslint-plugin to v6.8.0 2023-10-18 02:21:25 +09:00
c460cc2296 Updated readme plugins list (#1326) 2023-10-17 20:04:23 +09:00
4e4af5e830 fix(actions): fix if statement 2023-10-16 22:55:04 +09:00
9a4e98063b chore(actions): disable pnpm cache for macOS 2023-10-16 22:54:11 +09:00
8bfe04bb50 chore: update issue template
Thanks to Alipoodle for writing this question.
2023-10-16 22:42:02 +09:00
6774d54f5e chore(deps): update dependency rollup to v4.1.4 2023-10-16 16:41:36 +09:00
9705f8489d chore(deps): Bump @rollup/plugin-commonjs, pnpm version, Remove ytpl 2023-10-16 16:24:16 +09:00
a7229cbe14 Bump @rollup/plugin-commonjs, pnpm version 2023-10-16 03:08:04 +09:00
7577aba45e feat: use test:debug for CI 2023-10-16 02:08:25 +09:00
d78fbe476e hotfix: fix Cannot read properties of undefined (reading 'removeChild') 2023-10-16 01:09:24 +09:00
bfe4b2bba7 fix(actions): use GabrielBB/xvfb-action instead of coactions/setup-xvfb 2023-10-16 00:58:02 +09:00
7625a3aa52 QOL: Move source code under the src directory. (#1318) 2023-10-15 21:52:48 +09:00
30c8dcf730 fix: release action 2023-10-15 18:54:25 +09:00
00a3e8d35e chore(deps): Bump rollup, @xhayper/discord-rpc version 2023-10-15 18:35:57 +09:00
4d01cdfa6c fix(blocker): remove the app.isPackaged check (fix #1315) 2023-10-15 18:33:14 +09:00
f924b6c8e3 fix(actions): install pnpm before call setup-node 2023-10-15 18:28:09 +09:00
926d98174c fix: fix build actions 2023-10-15 18:22:19 +09:00
41b3972f54 chore(README): add pnpm install guide 2023-10-15 18:20:49 +09:00
467f29e363 feat: migrate from npm to pnpm (#1316) 2023-10-15 18:18:20 +09:00
9cc13c3757 Merge pull request #1317 from foonathan/fix-loop-status 2023-10-15 04:23:33 +09:00
f8ccb86156 Fix mpris player.loopStatus 2023-10-14 21:03:06 +02:00
b316aa2301 chore(deps): update dependency rollup to v4.1.0 2023-10-14 22:33:09 +09:00
5c49b28664 fix(discord): Discord RPC fails if a song's title is only one character (fix #1314) 2023-10-14 20:27:58 +09:00
dedf96afd3 Update changelog for v2.1.1 2023-10-14 05:49:56 +00:00
3bb5bc2ca1 Bump version to 2.1.1 2023-10-14 14:34:39 +09:00
c79fdd9887 fix: empty title playlist directory path 2023-10-14 14:03:47 +09:00
d7b821727d hotfix(downloader): can't get an album title (fix #1313) 2023-10-14 13:55:57 +09:00
TC
21c45faf20 Add "about" menu to show app version 2023-10-13 22:04:50 +02:00
92cab89d17 Update changelog for v2.1.0 2023-10-13 19:27:20 +00:00
fa160b2e90 Bump version to 2.1.0 2023-10-14 04:09:52 +09:00
308ac38e6b feat(downloader): Added support for audio format auto-detection (#1310) 2023-10-14 03:42:10 +09:00
a62cafb601 feat(in-app-menu): enable in-app-menu by default (in Windows) (#1311) 2023-10-14 03:07:06 +09:00
bf9e3b5f48 hotfix(downloader): fix invalid query selector (fix #1308) 2023-10-13 22:06:27 +09:00
3c6b3aeff0 chore(deps): bump dependencies 2023-10-12 13:39:14 +09:00
37181a7b5e chore(actions): create winget-cla.yml 2023-10-12 12:51:17 +09:00
0b363d6487 fix: winget publish (#1307)
* chore(actions): Update build.yml

* fix: installer regex
2023-10-12 08:01:10 +09:00
e9398adac3 Update changelog for v2.0.4 2023-10-11 16:02:44 +00:00
6901713036 Bump version to 2.0.4 2023-10-12 00:46:04 +09:00
1d5b2997bd fix(downloader): private playlist download 2023-10-12 00:41:58 +09:00
572a023aaa fix: fixed an issue with the initial launch in certain regions, such as South Korea 2023-10-11 23:09:05 +09:00
9187f1e240 Revert "fix: set default adblocker as InPlayer"
This reverts commit 85228fd7d2.
2023-10-11 22:47:56 +09:00
df13d7d0f3 Merge pull request #1304 from th-ch/fix/deps 2023-10-11 22:37:16 +09:00
85228fd7d2 fix: set default adblocker as InPlayer
Fixed an issue with the initial launch in certain regions, such as South Korea.
2023-10-11 22:12:54 +09:00
17ba071057 fix: crash before window loaded 2023-10-11 21:59:03 +09:00
d7df4d7d10 fix: fix It Just Works
Fixed an issue that caused inconsistent execution results.
2023-10-11 19:28:01 +09:00
7aa970cebc fix: bump dependencies 2023-10-11 18:24:11 +09:00
f08f003cf4 Merge pull request #1301 from th-ch/fix/1300
hotfix(adblocker): fix `ipcRenderer.sendSync() with ...`
2023-10-11 08:53:22 +09:00
9f99eded9e chore(readme): update build instruction 2023-10-11 08:48:36 +09:00
c512f13009 hotfix(adblocker): fix ipcRenderer.sendSync() with ...
This issue is caused by the renderer's adblocker being loaded before the main process's adblocker.
2023-10-11 02:01:44 +09:00
b475f780ff Merge pull request #1296 from Lucasamiel0406/master 2023-10-11 00:23:11 +09:00
2294102006 Merge pull request #1297 from nnnlog/master
fix(downloader): Korean filename is broken on non-macOS devices
2023-10-10 16:48:43 +09:00
d69a07d025 fix(downloader): normalize filename depending on OS 2023-10-10 16:05:09 +09:00
4f4995c20c fix: typo in readme.md 2023-10-10 15:54:55 +09:00
b6894dca29 chore(deps): bump deps 2023-10-10 14:10:33 +09:00
73f14e581d Fix Library removed for Premium users
As by now, the code removes the last child of the YT's buttons sidebar. It's good for non-premium users but affects premium users, as it removes the "Library" button.

This small fix targets the 4th child (usually the Upgrade button location) instead of last child.

A bad move/practice, but does its job and remove the Upgrade button while not removing the Library one.
2023-10-09 20:56:08 -03:00
2f2e64af4a Update changelog for v2.0.3 2023-10-09 16:06:41 +00:00
5710307ddc Bump version to 2.0.3 2023-10-10 00:51:44 +09:00
52ba2dc9ff remove: migration scripts 2023-10-10 00:51:16 +09:00
926b9fb5e6 feat: add migration script 2023-10-10 00:42:26 +09:00
a6c9b3381a fix(discord): apply hideGitHubButton 2023-10-10 00:42:10 +09:00
5dc13a4698 feat(discord): add Hide GitHub link Button (#1293) 2023-10-10 00:15:15 +09:00
a69085c591 fix: chore(deps): update dependency @jellybrick/mpris-service to 2.1.4 (fix #971) 2023-10-09 21:55:23 +09:00
a22f7fed21 feat(deps): bundle youtubei.js (temporary solution) (#1292) 2023-10-09 21:30:53 +09:00
8b7045fb1b chore(deps): update dependency @rollup/plugin-node-resolve to v15.2.3 2023-10-09 20:16:40 +09:00
efd1b92514 feat(defaults): change the default value of blocker back to WithBlocklists 2023-10-09 19:52:02 +09:00
969f6d7bba chore(deps): Bump @cliqz/adblocker-electron to 1.26.8 (fix #1269) 2023-10-09 19:50:27 +09:00
4f7c92d6a0 feat(plugins/utils): mediaIcons as const 2023-10-09 19:49:40 +09:00
24d4a50574 fix(mpris): fixed an issue where MPRIS information was incorrect (#1291) 2023-10-09 19:36:17 +09:00
7693a3ba4a fix(discord): fixed an issue where timeChanged was not being applied to Discord activities (#1290) 2023-10-09 19:36:06 +09:00
7ca4dc5c85 Fix: typo in README (#1286) 2023-10-08 23:54:58 +09:00
21ff09b605 Merge pull request #1283 from th-ch/fix/missing-taskbar-mediacontrol-icons 2023-10-08 19:57:50 +09:00
fbf4b3b8b5 fix: missing icons taskbar-mediacontrol 2023-10-08 19:41:39 +09:00
5812eb0147 Update changelog for v2.0.2 2023-10-08 08:51:28 +00:00
b5dbfaf686 Bump version to 2.0.2 2023-10-08 17:35:40 +09:00
6b7fd5ba63 Merge pull request #1272 from th-ch/feat/resolves-1265 2023-10-08 17:19:19 +09:00
73a049a7bc Merge pull request #1279 from th-ch/fix/1274 2023-10-08 17:18:54 +09:00
ef0c30e23a Merge pull request #1280 from th-ch/revert-scale-factor-patch 2023-10-08 17:18:33 +09:00
59ed2326d9 Revert "Fix for windows zoom (ScaleFactor) #1159"
This reverts commit d36fb592d0.
2023-10-08 17:06:30 +09:00
07a02c8c82 Revert "hotfix: fixed app launching offscreen"
This reverts commit ca92031e89.
2023-10-08 17:05:54 +09:00
f1050cb676 remove: remove useless CSS property 2023-10-08 15:35:08 +09:00
7131893f1c chore: update README
Added a guide to install YTM without a network connection.
2023-10-08 15:21:04 +09:00
e4dfb2ff33 feat(discord): remove hacky solution for calling callbacks 2023-10-08 15:01:26 +09:00
187fad6834 Merge branch 'master' into fix/1274 2023-10-08 15:00:30 +09:00
26df435db0 fix: fallback to DOM window controls on platforms without native support 2023-10-08 14:57:58 +09:00
0bee281d1d fix: discord-rpc (#1278) 2023-10-08 14:44:48 +09:00
26de5802a0 fix: prevent multiple RPCs from being registered 2023-10-08 13:55:40 +09:00
c258a4855e Merge pull request #1277 from th-ch/hotfix/1273 2023-10-08 12:56:16 +09:00
b7b6d50ba2 Merge pull request #1276 from jkrei0/master 2023-10-08 12:56:03 +09:00
0376a30fbb fix: prevent name shadowing 2023-10-08 12:39:24 +09:00
ca92031e89 hotfix: fixed app launching offscreen 2023-10-08 12:29:09 +09:00
986d2ad5b1 chore: add window control icons 2023-10-08 12:12:44 +09:00
d9b8d8c48d Fix in-app-menu squishing sub-menu items 2023-10-07 22:50:32 -04:00
0ef34d7c71 feat: use nsis-web instead of nsis 2023-10-08 03:04:53 +09:00
f87607d25d Merge pull request #1271 from th-ch/fix/lastfm 2023-10-08 02:54:13 +09:00
cc0bfae067 fix(last-fm): fix last-fm plugin 2023-10-08 02:41:06 +09:00
e7d2d04f5a fix(test): Add a test to check the title
It failed because of @cliqz/adblocker-electron.
Check see this issue: https://github.com/ghostery/adblocker/issues/3462
2023-10-08 01:16:11 +09:00
f4319ebc6b Update changelog for v2.0.1 2023-10-07 15:57:46 +00:00
a1f025e23c Bump version to 2.0.1
Hotfix for #1269, #1267
2023-10-08 00:44:38 +09:00
c002263c3b hotfix: hotfix for #1267 2023-10-08 00:39:36 +09:00
2d69dfd333 Update changelog for v2.0.0 2023-10-07 14:33:28 +00:00
9d99ffdc72 Bump version to 2.0.0 (#1257)
Co-authored-by: JellyBrick <shlee1503@naver.com>
2023-10-07 23:20:33 +09:00
a859b27eba Merge branch 'master' of https://github.com/th-ch/youtube-music 2023-10-07 22:53:32 +09:00
be26827609 feat(build-windows): Add support for IA32 (resolves #1110) 2023-10-07 22:51:50 +09:00
457a8b5018 Merge pull request #1259 from organization/feat/fork-to-main 2023-10-07 22:46:43 +09:00
0442e427a6 feat: rename Proxy label to Set Proxy 2023-10-07 22:27:08 +09:00
d45ca960b4 feat(in-app-menu): add toggle-menu 2023-10-07 22:16:54 +09:00
0bcfdbf39c chore: update README 2023-10-07 19:12:13 +09:00
e3b5afda3e feat(GitHub): add issue template (#1264) 2023-10-07 18:40:43 +09:00
97297a2c49 Merge remote-tracking branch 'origin/custom-version' into feat/fork-to-main 2023-10-07 12:51:40 +09:00
11ac756da5 chore(deps): update stefanzweifel/git-auto-commit-action action to v5 2023-10-07 12:51:16 +09:00
a273d13086 chore(deps): update dependency eslint to v8.51.0 2023-10-07 12:51:08 +09:00
ca11120036 fix: remove title check
YTM doesn't set the title after 2023-10-06
2023-10-07 12:48:53 +09:00
7dac9a2454 fix: need copying error.html to dist directory 2023-10-07 12:29:46 +09:00
30e0e99467 remove: versioning.md 2023-10-07 12:27:39 +09:00
275d8cb2b9 fix: build.yml 2023-10-07 12:27:05 +09:00
1cc46daead fix: .eslintignore 2023-10-07 12:24:53 +09:00
9048da22f9 fix: rollback changelog 2023-10-07 12:24:13 +09:00
70fa5aa217 fix(captions): fix configuration 2023-10-07 12:17:42 +09:00
6bf7f3b9eb chore: update package-lock.json 2023-10-07 12:12:40 +09:00
67579877bc fix: call pluginEnabledMenu(pluginName, pluginLabel) 2023-10-07 12:10:41 +09:00
534f96921e fix: beta label for lumiastream 2023-10-07 12:06:57 +09:00
22491ae0a0 feat: register the lumiaStream plugin 2023-10-07 12:05:16 +09:00
dd39bdd84c fix(menu): type error 2023-10-07 12:04:42 +09:00
935a307235 fix(index): electron.screen -> screen 2023-10-07 12:02:03 +09:00
517e9c0472 Merge branch 'origin-master' into feat/fork-to-main 2023-10-07 12:01:06 +09:00
b2c27b9fdb feat: prepare the fork for merging 2023-10-07 11:56:04 +09:00
8acfabf9f8 chore(deps): update dependency rollup to v4.0.2 2023-10-06 19:20:37 +00:00
375fb082f0 fix(lyrics-genius): fix th-ch/youtube-music#1253 2023-10-06 21:15:01 +02:00
TC
8b65f1d6e4 add player method "open" for mpris #1155 2023-10-06 21:10:58 +02:00
TC
d36fb592d0 Fix for windows zoom (ScaleFactor) #1159 2023-10-06 21:06:36 +02:00
TC
575a643e55 Enhance Discord RPC Presence with direct link to Git Repository 2023-10-06 21:04:11 +02:00
TC
07853d8b39 Changed ZoomIn ZoomOut Shortcuts to Ctrl+I/Ctrl+O 2023-10-06 21:00:50 +02:00
TC
da9cb8e2f5 Add lumiastream beta plugin 2023-10-06 20:58:18 +02:00
TC
22acaf688f Backport ambient mode plugin 2023-10-06 20:33:49 +02:00
TC
063ba1b6c7 Backport album color theme plugin 2023-10-06 20:20:03 +02:00
TC
0229ccaa1e Fixed canvas injected at the wrong position #1234 2023-10-06 20:08:08 +02:00
df1e28546b Merge pull request #1235 from organization/feat/typescript
feat: I guess it's TypeScript
2023-10-06 20:05:57 +02:00
1806d5a0a2 fix: fix the downloader to work in a proxy environment (resolve #46) 2023-10-06 23:22:15 +09:00
59efba4dec chore(deps): update dependency rollup to v4.0.1 2023-10-06 14:19:42 +00:00
670ed62360 chore(deps): update dependency rollup to v4 (#44)
* chore(deps): update dependency rollup to v4

* chore(deps): bump rollup to v4

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: JellyBrick <shlee1503@naver.com>
2023-10-06 09:21:29 +09:00
6a2b393b45 chore(deps): update dependency @rollup/plugin-wasm to v6.2.2 2023-10-06 08:52:08 +09:00
4488a3adba chore(deps): update dependency @rollup/plugin-terser to v0.4.4 2023-10-06 08:51:55 +09:00
eb7ef7ab36 chore(deps): update dependency @rollup/plugin-typescript to v11.1.5 2023-10-06 08:50:10 +09:00
dcadf0a31a chore(deps): update dependency @rollup/plugin-node-resolve to v15.2.2 2023-10-06 08:49:28 +09:00
3dda8b7c2e chore(deps): update dependency @rollup/plugin-json to v6.0.1 2023-10-05 22:27:03 +00:00
947007cc59 chore(deps): update dependency @rollup/plugin-image to v3.0.3 2023-10-05 18:51:19 +00:00
bf5ac285d3 chore(deps): update dependency @rollup/plugin-commonjs to v25.0.5 2023-10-05 17:12:29 +00:00
5dfbdd4882 Update changelog for v2.1.0 2023-10-05 10:23:43 +00:00
3cd1f79886 release 2.1.0 2023-10-05 19:10:47 +09:00
04234f0b3f Merge pull request #36 from organization/docs/versioning 2023-10-05 19:09:07 +09:00
7b30896091 chore(docs): versioning 2023-10-05 19:07:56 +09:00
2cf29fe88d Merge pull request #35 from organization/fix/sharp 2023-10-05 19:04:41 +09:00
09ce665df1 feat: remove sharp, fast-average-color-node deps 2023-10-05 19:01:54 +09:00
299f34d98e chore: Update readme.md 2023-10-05 11:50:17 +09:00
1af73a7cf8 Update changelog for v2.0.3 2023-10-04 15:26:38 +00:00
bcc7397f26 release 2.0.3 2023-10-05 00:11:38 +09:00
95ac01c9ba Merge pull request #33 from organization/feature/ambient-mode 2023-10-04 23:57:57 +09:00
edd7b80fcd fix: fix #34 2023-10-04 23:57:19 +09:00
231514ae0d fix: fix #32 2023-10-04 23:51:21 +09:00
0c948d5ea1 feat(ambient-mode): improve performance 2023-10-04 23:43:45 +09:00
50117ea51b fix: fix #29 2023-10-04 22:53:25 +09:00
78d8160823 fix: fix #30 2023-10-04 22:30:11 +09:00
81b2303a6f feat(ambient-mode): add ambient effect interpolation 2023-10-04 22:22:41 +09:00
f7a09082a5 Update changelog for v2.0.2 2023-10-04 12:18:27 +00:00
ca318450b8 release 2.0.2 2023-10-04 21:02:59 +09:00
e86739c99c fix: fix #29 2023-10-04 20:59:32 +09:00
92a3a55803 fix: fix #30 2023-10-04 20:30:04 +09:00
7479f2f697 feat(ambient-mode): add ambient-mode plugin 2023-10-04 20:28:14 +09:00
371a7eb475 hotfix: fix #28 2023-10-04 20:22:50 +09:00
84f6e46efc revert "chore(deps): update dependency node-fetch to v3"
auto-changelog needs node-fetch v2 (cjs)
2023-10-04 20:11:20 +09:00
110dbd3e18 release 2.0.1 2023-10-04 19:35:52 +09:00
4b7d94b1d5 chore: bump dependencies 2023-10-04 19:26:46 +09:00
9c4aa4bcb2 chore(deps): update actions/checkout action to v4 2023-10-04 18:41:34 +09:00
a7fd8bc21b feat: configure renovate 2023-10-04 18:34:06 +09:00
548f82ba0a fix rollup hanging 2023-10-04 18:32:08 +09:00
127e325b2b release 2.0.0 2023-10-04 18:04:52 +09:00
40745d3946 feat: apply rollup 🚀 (#20)
Co-authored-by: Su-Yong <simssy2205@gmail.com>
2023-10-04 17:51:39 +09:00
2c337953eb fix(album-color-theme): fix album-color-theme not working in macos 2023-10-04 00:15:54 +09:00
61cb3135f3 fix(macos): fix some plugins not working in macos 2023-10-04 00:12:49 +09:00
1a2f20042b Merge branch 'custom-version' of https://github.com/organization/youtube-music-next into custom-version 2023-10-03 23:42:35 +09:00
6e315b9af2 refactor: remove dynamic require (partial of #2)
Co-authored-by: Su-Yong <simssy2205@gmail.com>
2023-10-03 23:42:12 +09:00
9438cd8b26 fix: resolve #12 2023-10-03 19:06:13 +09:00
6eadc7f7e5 fix(precise-volume): fix slider ui does not sync
resolve #15
2023-10-03 18:21:43 +09:00
399c6e37ce fix(video-toggle): fix video config not load config
resolve #16
2023-10-03 18:03:13 +09:00
16a32d1946 Update changelog for v1.20.4 2023-10-03 05:31:53 +00:00
45b7422ea8 release 1.20.4 2023-10-03 14:18:06 +09:00
76c570413a fix: Mitigation for issue #2 2023-10-03 14:16:31 +09:00
b9ea98c115 fix(in-app-menu): remove unused observer 2023-10-03 12:56:49 +09:00
2c38b8a764 fix(tuna-obs): change to not print messages when not in development mode 2023-10-03 12:44:00 +09:00
7af418a040 fix(in-app-menu): fix titlebar margin 2023-10-03 12:39:36 +09:00
bc40fc3d49 fix: remove FluentScrollbar 2023-10-03 11:11:39 +09:00
831aa3d391 feat: add startingPage unset option 2023-10-03 11:09:45 +09:00
2fe391beba Merge branch 'feat/typescript' into custom-version 2023-10-03 10:51:52 +09:00
47bd015549 chore(deps): bump deps 2023-10-03 10:51:25 +09:00
2cb05c9d86 fix(in-app-menu): overlay-scrollbar 2023-10-03 10:45:01 +09:00
5a7774e7b1 refactor(in-app-menu): refactor in-app-menu plugin
resolve #13
2023-10-03 03:31:25 +09:00
a5fe8bc589 feat(precise-volume): add shadow on volume text 2023-10-02 21:50:52 +09:00
aed1bbc6d7 fix(lyrics-genius): fix th-ch/youtube-music#1253 2023-10-02 21:00:53 +09:00
042083b112 feat(disable-autoplay): add apply once, resolve #9 2023-10-02 19:08:17 +09:00
61b04e9b42 fix: fix #4 2023-10-02 18:04:51 +09:00
f655cdf953 fix: fix #7 2023-10-02 17:24:17 +09:00
4118b4b6c4 Update changelog for v1.20.3 2023-10-01 04:00:55 +00:00
5cd2e78e88 release 1.20.3: fix updater download link 2023-10-01 12:49:25 +09:00
70b5e579b1 chore: Update index.html 2023-10-01 12:42:02 +09:00
71f2123f27 release 1.20.2 2023-10-01 12:33:38 +09:00
40fa1bac92 fix: CVE-2023-4863, CVE-2023-5129 2023-10-01 12:32:43 +09:00
10049d1ee9 chore: update README 2023-10-01 12:25:53 +09:00
faaf54d0b0 Update changelog for v1.20.1 2023-09-30 11:22:12 +00:00
7224620350 fix(actions): fix release upload 2023-09-30 20:10:23 +09:00
549f0f7c7a Merge branch 'feat/typescript' into custom-version 2023-09-30 20:01:50 +09:00
529d5e165c fix: fix 'Application entry file Not found' 2023-09-30 20:01:31 +09:00
35f6064b7a fix(actions-linux): release 2023-09-30 19:47:52 +09:00
c11ec3341a release 1.20.1 2023-09-30 19:39:37 +09:00
b7142000ab fix: release 2023-09-30 19:28:38 +09:00
e3d41ccb95 chore(Actions): update workflows 2023-09-30 19:27:12 +09:00
1067417dbd Merge branch 'feat/typescript' into custom-version 2023-09-30 18:46:43 +09:00
c554ed79b1 fix(prompt-custom-titlebar): fix customScript is not function 2023-09-30 18:46:16 +09:00
8fd6bdbdf3 fix(album-color-theme): use 30 instead of 25 2023-09-30 15:16:46 +09:00
92ecf6a0b0 fix(album-color-theme): dynamic lightness 2023-09-30 15:16:04 +09:00
8d475eda0a Merge branch 'feat/typescript' into custom-version 2023-09-30 08:45:07 +09:00
46d3a85cc0 fix: remove unnecessary JSON.stringify & JSON.parse 2023-09-30 08:43:10 +09:00
72660f5aa1 fix: reduce unchecked type-cast 2023-09-30 08:35:16 +09:00
8fa1c7e5a8 Merge branch 'feat/typescript' into custom-version 2023-09-30 06:04:47 +09:00
f532398a9c chore(deps): bump electron version 2023-09-29 10:17:35 +09:00
6bb33453c7 feat: Album Color Theme plugin
Co-authored-by: EdiBOI25 <86252338+EdiBOI25@users.noreply.github.com>
2023-09-27 18:19:23 +09:00
170e2a696e cherry-picked: Fixed canvas injected at the wrong position
Co-authored-by: MiepHD <63968466+MiepHD@users.noreply.github.com>
2023-09-27 17:13:51 +09:00
1ff69c933c chore(deps): bump electron version 2023-09-27 17:08:42 +09:00
0935edd516 chore(deps): bump electron version 2023-09-26 12:09:46 +09:00
e7e3e8abe0 chore(deps): bump deps, remove unused dependency (@types/youtube-player) 2023-09-26 02:47:50 +09:00
3e77064cd3 chore(deps): bump deps 2023-09-23 21:49:34 +09:00
4651d6d241 feat(adblocker): change default blocker to the blocklist (ghostery/adblocker#3420) 2023-09-21 03:52:33 +09:00
7418a1f4b2 feat: use TS private keyword instead of JS private identifier 2023-09-21 03:38:53 +09:00
c6bba51166 chore(deps): bump deps 2023-09-20 13:32:06 +09:00
c8b149281b fix: update GitHub Actions script 2023-09-19 22:32:37 +09:00
3276e318d8 chore(deps): bump deps 2023-09-19 13:15:57 +09:00
d0d739e61f fix: add back butterchurn 2023-09-18 06:44:48 +09:00
3f3a5483ed fix: Issues with TrustedTypes being reflected incorrectly 2023-09-18 06:42:27 +09:00
c90ab00c09 fix: vudio 2023-09-18 04:19:37 +09:00
5e29235c03 feat: use policy cache instead of creating a new policy for each request 2023-09-18 03:24:49 +09:00
e81671f4da fix: fix npm run lint command 2023-09-18 03:08:45 +09:00
fbf92971a5 fix: TrustedHTML warning 2023-09-18 03:08:15 +09:00
0c06d59a47 fix: fix #1187 2023-09-18 01:49:57 +09:00
5237311f1f chore(deps): bump deps 2023-09-17 21:53:13 +09:00
7d355ea1f2 fix: resolves #978 2023-09-13 22:52:06 +09:00
ad8b9c9bf7 fix: resolves #958 2023-09-13 21:54:45 +09:00
f2b532d8fa chore(deps): bump electron version 2023-09-13 17:45:42 +09:00
c6ee222e43 chore(deps): bump deps 2023-09-12 10:52:01 +09:00
9739dbe27f fix(download): Crashes due to genius-lyrics feature 2023-09-11 15:58:44 +09:00
1d6f1d2216 chore(deps): bump deps 2023-09-10 18:39:41 +09:00
563daae11a chore(README): update README 2023-09-04 18:58:03 +09:00
451d33707a fix: downloader
For example, in South Korea, YouTube Music is only available to YT premium users.
Therefore, calling getInfo without passing a cookie will always return `UNPLAYABLE`.
2023-09-04 18:01:54 +09:00
ce264c5d65 fix: minor fix 2023-09-04 17:45:25 +09:00
9b6e3c850a fix(config): fix missing semi-colon 2023-09-04 17:38:44 +09:00
ae1e106ccd feat(config): more 'optimized' generic 2023-09-04 17:38:03 +09:00
b362118207 fix: discord plugin 2023-09-04 17:20:33 +09:00
73287cf8b2 fix: assets path 2023-09-04 17:20:07 +09:00
42ad78c6cc fix(package.json): macOS exclude path 2023-09-04 16:29:28 +09:00
031875ad86 fix: show interactive icon when using non-packaged mode 2023-09-04 15:50:35 +09:00
27086e759f fix: fix youtube-age-restriction-bypass
Co-authored-by: MiepHD <63968466+MiepHD@users.noreply.github.com>
2023-09-04 13:44:53 +09:00
913c69a33d feat(youtube-player-api): fix type definitions 2023-09-04 12:35:46 +09:00
2eaa660a6d feat: add more type-definitions for youtube-player
Co-authored-by: ArjixWasTaken <53124886+ArjixWasTaken@users.noreply.github.com>
2023-09-04 12:25:43 +09:00
d811ebadb4 remove unused dependencies 2023-09-04 04:04:55 +09:00
774815c4e5 remove: butterchurn (it does not work on node v18) 2023-09-04 03:55:14 +09:00
a5bdb257d4 fix: remove (abstract) visualizer from menu
Co-authored-by: Su-Yong <simssy2205@gmail.com>
2023-09-04 03:53:48 +09:00
72c8c49edf fix: apply fix from eslint 2023-09-04 03:50:44 +09:00
68d985acba fix: Fixes the video-toggle being displayed at the wrong position on fullscreen (#1218)
Co-authored-by: MiepHD <63968466+MiepHD@users.noreply.github.com>
2023-09-04 03:28:50 +09:00
76a7b303fa Merge remote-tracking branch 'th-ch/master' into feat/typescript 2023-09-04 03:25:47 +09:00
b5472c11df fix: fix plugins cannot load config 2023-09-04 03:04:44 +09:00
0c45f9850b Merge pull request #1225 from sitiom/master-1
Change Winget Releaser job to `ubuntu-latest`
2023-09-03 19:58:24 +02:00
999d4ab4ab Merge pull request #1218 from MiepHD/fix-wrong-position-of-video-toggle-on-fullscreen
Fixes the video-toggle being displayed at the wrong position on fullscreen
2023-09-03 19:51:20 +02:00
5069913c56 update build script 2023-09-04 02:42:25 +09:00
88dea85f03 Merge pull request #1206 from GoudronViande24/master
Fix Remove upgrade button
2023-09-03 19:40:49 +02:00
85793d70f7 Merge pull request #1221 from MiepHD/fix-blackscreen-of-bypass
Fixed Age Restriction Bypass
2023-09-03 19:38:57 +02:00
12825d8bf2 fix: require 2023-09-04 02:30:16 +09:00
53f5bda382 feat: migration to TypeScript FINAL
Co-authored-by: Su-Yong <simssy2205@gmail.com>
2023-09-04 02:27:53 +09:00
c0d7972da3 fix: Remove upgrade button
https://github.com/th-ch/youtube-music/pull/1206
2023-09-03 21:05:22 +09:00
278618bc83 feat: migration to TypeScript part 3
Co-authored-by: Su-Yong <simssy2205@gmail.com>
2023-09-03 21:02:57 +09:00
03c1ab0e98 feat(exponential-volume): fix type of function
Co-authored-by: Su-Yong <simssy2205@gmail.com>
2023-09-03 17:29:47 +09:00
8b5a094eb5 feat(exponential-volume): fix type of WeakMap
Co-authored-by: Su-Yong <simssy2205@gmail.com>
2023-09-03 16:57:36 +09:00
1f52995dc4 feat(exponential-volume): migration to TypeScript 2023-09-03 16:55:21 +09:00
d30755e5fa feat: migration to TypeScript part 2
Co-authored-by: Su-Yong <simssy2205@gmail.com>
2023-09-03 06:37:47 +09:00
82bcadcd64 feat: typescript part 1
Co-authored-by: Su-Yong <simssy2205@gmail.com>
2023-09-03 00:25:48 +09:00
3e3fdb3c3f fix: use net.fetch instead of node native fetch 2023-09-01 21:22:21 +09:00
b67a4ed9bb chore(deps): electron 27.0.0-alpha.5 2023-09-01 21:21:34 +09:00
06b9cf9255 chore(deps): electron 27.0.0-alpha.4 2023-08-30 22:05:36 +09:00
4284bcc329 fix: video event listener 2023-08-30 21:46:23 +09:00
aacc2d261b chore(deps): remove node-fetch, migration to node v18 fetch API 2023-08-29 21:15:22 +09:00
92da06eb96 fix(in-app-menu): custom-electron-titlebar 2023-08-29 19:37:31 +09:00
897cfd3c7d apply fix from eslint 2023-08-29 19:14:51 +09:00
c722896a73 fix: remove xo, migration to eslint 2023-08-29 17:22:38 +09:00
31a7588cee chore(adblocker): update filters 2023-08-29 17:00:33 +09:00
da69d4c5a6 chore(deps): pinned deps version 2023-08-29 17:00:06 +09:00
ce0ee82648 fix simple-youtube-age-restriction-bypass version 2023-08-29 16:59:06 +09:00
c837f104f7 bump deps version, remove yarn 2023-08-29 16:54:26 +09:00
2f73548701 fix(tuna): handle playPaused (#1) 2023-08-29 15:43:58 +09:00
efb92a3513 Change Winget Releaser job to ubuntu-latest 2023-08-18 10:40:47 +08:00
98fc8e3b9d Changed to a dependency 2023-08-13 18:01:19 +02:00
6f0d4fbbe4 Fixed Age Restriction Bypass
Used https://github.com/zerodytrash/Simple-YouTube-Age-Restriction-Bypass/issues/209#issuecomment-1676146296 to generate a new file on https://github.com/MiepHD/Simple-YouTube-Age-Restriction-Bypass-electron and added this here
2023-08-13 10:36:52 +02:00
dab97293be Fixes the video-toggle being displayed at the wrong position on fullscreen 2023-08-11 20:00:40 +02:00
TC
f2149e3b72 Fix draggable elements 2023-08-05 12:00:55 +02:00
48b0469a4e Fix Remove upgrade button
For some reason now it loads later, so I just added some CSS to hide it in the DOM instead of the element
2023-07-17 00:42:33 -04:00
1add1a2233 change css query to target upgrade button 2023-07-16 23:55:35 -04:00
9f4187e64a Merge pull request #1190 from th-ch/compact-sidebar-plugin
Add plugin to always use the compact sidebar
2023-07-09 19:47:39 +02:00
f1bbae69ac Merge pull request #1189 from th-ch/no-google-login-fixes
Hide login elements
2023-07-09 19:45:57 +02:00
98a2c0d82b Merge pull request #1191 from th-ch/fix-navigation
Fix navigation arrows
2023-07-09 19:45:05 +02:00
TC
d0733e25dc Fix navigation arrows 2023-07-04 22:05:58 +02:00
TC
34aded725d Add plugin to always use the compact sidebar 2023-07-04 21:51:50 +02:00
TC
bb385d440e Hide login elements 2023-07-04 21:48:41 +02:00
1ed43e11ad Merge pull request #1156 from Suplanus/patch-1
MacOS better copy paste in readme.md
2023-05-22 21:58:21 +02:00
bf8b88cb60 MacOS better copy paste in readme.md 2023-05-22 06:38:39 +02:00
f0f85955dc Update changelog for v1.20.0 2023-05-18 11:21:16 +00:00
d7950fbf70 Merge pull request #1117 from th-ch/release-1-20
Bump version to 1.20.0
2023-05-18 13:11:16 +02:00
TC
c8f12990eb Merge branch 'master' of github.com:th-ch/youtube-music into release-1-20
* 'master' of github.com:th-ch/youtube-music:
  Use 'with blocklists' as default in menu
  add xesam:url mpris from songInfo.url
  Bump cliqz/adblocker-electron
  Implement both blocklists and in-player blocking
  revert adblocker bump
2023-05-12 22:34:08 +02:00
eb14286315 Merge pull request #1134 from th-ch/adblocker-multi-implem
Multiple implementations for the Adblocker plugin
2023-05-12 22:32:14 +02:00
217c3f41ee Merge pull request #1138 from QuditWolf/master
add xesam:url mpris from songInfo.url
2023-05-12 22:28:36 +02:00
TC
a9227b529c Use 'with blocklists' as default in menu 2023-05-12 19:07:51 +02:00
9f77dcc348 add xesam:url mpris from songInfo.url 2023-05-11 14:23:54 +05:30
TC
3b6a7c82ef Bump cliqz/adblocker-electron 2023-05-08 22:23:21 +02:00
TC
69f560cdd1 Implement both blocklists and in-player blocking 2023-05-08 22:23:11 +02:00
c488c30015 Merge pull request #1124 from Araxeus/revert-adblocker-bump
revert adblocker bump
2023-04-26 12:53:48 +02:00
135e1002e6 revert adblocker bump
This is supposed to fix the performance regression introduced in #1100

fix #1105
2023-04-25 13:43:03 +03:00
TC
f51e625c29 Merge branch 'master' of github.com:th-ch/youtube-music into release-1-20
* 'master' of github.com:th-ch/youtube-music:
  fix security issues in deps
  commit assets/generated
  .gitattributes set `eol=lf` on **all** files
  remove `electron.remote` dependency
2023-04-16 22:08:11 +02:00
040946ca9e Merge pull request #1116 from Araxeus/fix-security-issues-in-deps
fix security issues in dependencies
2023-04-16 22:07:22 +02:00
5098ddb98c Merge branch 'local-upstream/master' into fix-security-issues-in-deps 2023-04-15 23:58:17 +03:00
80c152f795 Merge branch 'local-upstream/master' into fix-security-issues-in-deps 2023-04-15 23:57:09 +03:00
9cde19d906 fix security issues in deps 2023-04-15 23:56:27 +03:00
3f33eb8c07 Merge pull request #1118 from Araxeus/commit-assets/generated
commit assets/generated
2023-04-15 22:55:19 +02:00
0bba2980c7 commit assets/generated 2023-04-15 23:53:36 +03:00
7e60049143 Merge pull request #1113 from Araxeus/remove-last-remnant-of-electron.remote
remove `electron.remote` dependency
2023-04-15 22:47:01 +02:00
e74098e9a5 Merge pull request #1115 from Araxeus/fix-eol-diff
.gitattributes set `eol=lf` on *all* files
2023-04-15 22:39:35 +02:00
TC
4fe02baace Bump version to 1.20.0 2023-04-15 22:13:23 +02:00
eecc13852f Merge pull request #1114 from Araxeus/fix-single-instance-lock 2023-04-15 20:39:00 +03:00
2135e01ee1 .gitattributes set eol=lf on **all** files 2023-04-15 20:17:46 +03:00
346d301fe4 fix single instance lock menu checkbox 2023-04-15 20:16:47 +03:00
263a335c96 remove electron.remote dependency
now in renderer check if we are in dev mode using `'npm_package_name' in process.env`

The logic is that we always run the dev mode via npm/yarn and thus that env var will be available
2023-04-15 20:14:12 +03:00
20db77f965 Merge pull request #1102 from Araxeus/caption-selector-use-new-dynamic-configProvider 2023-04-14 23:22:54 +03:00
d0ab23fa88 Merge pull request #1104 from Araxeus/update-dependencies 2023-04-14 23:21:45 +03:00
a669b1ed3a Update yarn.lock 2023-04-14 22:59:54 +03:00
660fce8c99 Merge branch 'local-upstream/master' into update-dependencies 2023-04-14 22:59:36 +03:00
4bfca93713 bump dependencies 2023-04-14 22:49:17 +03:00
bb1295c5f7 Update yarn.lock 2023-04-14 22:46:03 +03:00
5f97255908 Merge pull request #1112 from th-ch/snyk-upgrade-51ddcc2948aa66e1f48f220d96e9a7a3 2023-04-14 22:32:40 +03:00
7a50bbd0c6 Merge pull request #1101 from Araxeus/fix-crossfade-beta-tag 2023-04-14 22:25:25 +03:00
7f7267d806 fix: upgrade html-to-text from 9.0.4 to 9.0.5
Snyk has created this PR to upgrade html-to-text from 9.0.4 to 9.0.5.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2023-04-14 14:21:39 +00:00
12d9b07c8d [caption-selector] use new dynamic configProvider 2023-04-05 13:43:40 +03:00
0b6b707ccd fix crossfade beta tag 2023-04-05 13:41:08 +03:00
TC
5a775b238c Fix name attribute in dynamic config 2023-04-04 22:13:04 +02:00
cad8e4fe83 Merge pull request #1096 from Araxeus/crossfade-beta-psa
[crossfade] add `[beta]` tag to warn of possible bugs
2023-04-04 22:05:40 +02:00
4b9af14c40 Merge pull request #1065 from Araxeus/add-crossfade-menu-options
[crossfade] add menu options
2023-04-04 22:03:49 +02:00
f8db04e3fc Merge pull request #1079 from Araxeus/option-to-load-captions-selector-on-every-song
[captions-selector] add `autoload` option
2023-04-04 21:56:35 +02:00
e8b712b3fa Merge pull request #1091 from Araxeus/fix-new-downloader-metadata
[downloader] Cleanup metadata
2023-04-02 21:31:17 +02:00
556b1a213e Merge pull request #1099 from Araxeus/fix-protocol-handler-on-unix
fix protocol handler on unix
2023-04-02 21:25:07 +02:00
8daf2462ec Merge pull request #1090 from Araxeus/fix-merge-conflict-mistake-in-#1032
fix merge conflict mistake in #1032
2023-04-02 21:24:17 +02:00
99e0eec9fe Merge pull request #1068 from Araxeus/add-pseudo-decorators
Create providers/decorators.js
2023-04-02 21:23:37 +02:00
f36283d63f Merge pull request #1100 from Araxeus/fix-ads-on-start
[adblocker] fix ads showing on program start
2023-04-02 21:21:08 +02:00
1a73e74039 fix ads on start 2023-04-02 19:40:03 +03:00
454061ece9 fix protocol handler on unix
on Windows the arg gets appended with `/` but not on Unix
2023-04-02 18:14:48 +03:00
e6746722c5 add a [beta] tag to crossfade plugin 2023-04-01 16:35:31 +03:00
4c07817b72 fix merge conflict mistake in #1032 2023-03-29 18:02:05 +03:00
ac9b59dc84 [downloader] Cleanup metadata
* Title and artist gets cleaned as before
* We now ignore thumbnail that ends with `.webp` since they cause problems
2023-03-27 23:49:30 +03:00
4e10dab5a8 cache downloader getCoverBuffer() 2023-03-27 22:25:57 +03:00
8124c2b218 lint 2023-03-27 22:25:38 +03:00
fe813df0b5 Merge branch 'local-upstream/master' into add-pseudo-decorators 2023-03-27 21:08:02 +03:00
05278ab643 Merge pull request #1086 from Araxeus/fix-new-downloader-issues
Allow downloading age restricted videos
2023-03-26 22:00:33 +02:00
f722cf86dd Allow downloading age restricted videos
* Bypass age restriction using `androidTvInfo`
* Bump youtubei.js fix #1084
* Add more detailed error messages, including song name or url
2023-03-24 14:59:16 +03:00
b909df9e66 Merge pull request #1073 from Araxeus/add-starting-page-option
add starting page option
2023-03-22 22:04:36 +01:00
55a442e90e lint 2023-03-22 17:39:47 +02:00
af569c3eee Merge branch 'local-upstream/master' into add-starting-page-option 2023-03-21 17:47:40 +02:00
45fa963818 allow default startingPage 2023-03-21 17:46:52 +02:00
764f08ebfb Merge branch 'local-upstream/master' into add-crossfade-menu-options 2023-03-20 00:06:06 +02:00
94f2cbaf06 Merge branch 'local-upstream/master' into option-to-load-captions-selector-on-every-song 2023-03-19 23:52:43 +02:00
2ad097c743 use new dynamic config 2023-03-19 23:48:05 +02:00
648d102101 add subscribe and subscribeAll to config
this primarily allows front.js to have an up to date config without requesting it over ipc every second

for example the crossfade plugin uses its `options.secondsBeforeEnd` every second - so `subscribeAll` would be much more efficient in this case
2023-03-19 23:47:29 +02:00
212009a69b create sendToFront()
TODO: replace all `webcontents.send ` with `sendToFront  = require('../providers/app-controls')`
2023-03-19 23:42:27 +02:00
TC
4364d3be71 Update yarn.lock 2023-03-19 21:33:47 +01:00
62e2e8a471 Merge pull request #1054 from Araxeus/new-downloader
[downloader] plugin overhaul
2023-03-19 21:31:57 +01:00
5d8b04b8d6 Merge branch 'master' into new-downloader 2023-03-19 21:29:37 +01:00
3526197d93 Merge pull request #1070 from th-ch/snyk-upgrade-671b977ed73c84d1af527353a8713dbf
[Snyk] Upgrade @cliqz/adblocker-electron from 1.25.2 to 1.26.0
2023-03-19 20:06:41 +01:00
494b1d9515 Merge branch 'local-upstream/master' into add-crossfade-menu-options 2023-03-19 21:05:23 +02:00
5f71be280b Merge pull request #1072 from Araxeus/fix-uploaded-library-css
[in-app-menu] fix css style of the library of uploaded songs
2023-03-19 20:05:15 +01:00
e8c3716106 use new dynamic config 2023-03-19 21:02:23 +02:00
9840956ef7 Merge pull request #1077 from Araxeus/Add-option-to-remove-like-buttons
add option to hide the like buttons
2023-03-19 20:00:48 +01:00
605401166d Merge branch 'local-upstream/master' into new-downloader 2023-03-19 20:57:55 +02:00
03f4654518 Merge pull request #1081 from danielchalmers/patch-1
Nitpick: Fix name casing in tray icon tooltip
2023-03-19 19:28:59 +01:00
e87099c816 Merge pull request #1082 from DereC4/romanization-patch
[lyrics-genius] Improved reliability of east asian language detection #1080
2023-03-19 19:27:44 +01:00
83eb187d91 Merge pull request #1064 from Araxeus/add-centralized-synced-config-for-plugins
Add dynamic synced plugin config provider
2023-03-19 19:26:47 +01:00
20cdaf2317 Merge pull request #1063 from Araxeus/fix-caption-selector-showing-when-unavailable
[captions-selector] fix button showing when there aren't any captions available
2023-03-19 19:26:06 +01:00
4f4372b65a fix PR review comments 2023-03-19 20:23:09 +02:00
325026e3ea rome lint 2023-03-19 20:15:15 +02:00
a6242d13ae add getActivePlugins and isActive 2023-03-19 03:00:17 +02:00
bc2a1f7f71 Updated Regex to be cleaner 2023-03-18 13:15:25 -05:00
d5c2ad2115 Romanization update 2023-03-17 18:02:48 -05:00
3abef7cb8a Nitpick: Fix name casing in tray icon tooltip 2023-03-17 11:49:22 -05:00
b45c628142 [captions-selector] add autoload option 2023-03-17 00:09:32 +02:00
9d6a78bc57 bump custom-electron-prompt
* enable onwheel in number inputs
* enable wheel event on keybind prompt
2023-03-16 23:50:35 +02:00
7018481b1d Merge branch 'add-centralized-synced-config-for-plugins' into option-to-load-captions-selector-on-every-song 2023-03-16 20:14:12 +02:00
9f9e991aec [crossfade] fix options not saving as numbers 2023-03-16 19:55:30 +02:00
640ba26d55 add option to hide the like buttons
fix #1075
2023-03-16 19:02:09 +02:00
f5758bfe93 add defaults and migrations 2023-03-15 23:27:36 +02:00
a3ea37d412 add starting page option
fix #1071
2023-03-15 23:06:34 +02:00
89c664b4d2 fix uploaded library style
follows up on  [in-app-menu] fix items hidden by navbar in library #1067
2023-03-15 21:52:25 +02:00
51871a3fec catch errors in downloadSong() 2023-03-15 20:29:12 +02:00
04ca4e8537 fix: upgrade @cliqz/adblocker-electron from 1.25.2 to 1.26.0
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.25.2 to 1.26.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2023-03-15 15:15:48 +00:00
023258f1d7 fix crossfade option prompt height 2023-03-15 08:24:50 +02:00
848bb36c64 rename defaultOptions to config 2023-03-14 23:40:46 +02:00
a6e9c140fe Merge branch 'local-upstream/master' into add-crossfade-menu-options 2023-03-14 23:39:19 +02:00
e972fd15c2 Merge pull request #1067 from Araxeus/fix-in-app-menu-navbar-hiding-library-items
[in-app-menu] fix items hidden by navbar in library
2023-03-14 22:34:57 +01:00
ed5fb06504 Merge pull request #1061 from Araxeus/fix-app-logo-is-draggable
Fix Youtube Music logo is draggable
2023-03-14 22:30:46 +01:00
51c2b76c8b Merge pull request #1069 from Araxeus/fix-check-action-failing-on-forks
fix build action failing on forks, and run it on pull requests
2023-03-14 22:25:47 +01:00
f193c0b547 Merge pull request #1059 from Araxeus/rename-single-instance-lock-menu-name 2023-03-14 17:20:22 +02:00
7ac3cf69b6 try to fix songInfo time&album (#1032) 2023-03-14 17:18:40 +02:00
69cd5ed613 [lyrics] Romanization toggle for Genius plugin (#1039) 2023-03-14 17:16:41 +02:00
1649bd9c2d run build.yml on pull request and pushes to master 2023-03-12 22:14:44 +02:00
a97888a207 fix check action failing on forks 2023-03-12 22:03:34 +02:00
f1073e37b5 use pseudo decorators 2023-03-12 21:41:15 +02:00
7abc67b456 Create providers/decorators.js 2023-03-12 21:35:03 +02:00
b652a011a5 lint 2023-03-12 20:00:10 +02:00
83abbdb25a add caching to getCoverBuffer
when downloading an album, will no longer re-download an encode identical cover images
2023-03-12 19:53:25 +02:00
837e888462 [in-app-menu] fix items hidden by navbar in library 2023-03-12 19:40:51 +02:00
66ccd71b7c [crossfade] add menu options 2023-03-12 02:14:23 +02:00
108c778f6d fix caption selector showing when unavailable 2023-03-12 02:07:04 +02:00
af2b6782e8 bump custom-electron-prompt 2023-03-12 02:07:03 +02:00
7d93e9f031 fix config.setAll() 2023-03-12 02:04:29 +02:00
8c311bf630 bump custom-electron-prompt 2023-03-12 01:59:21 +02:00
bdfdf83c24 [notifications] use dynamic config 2023-03-12 00:28:15 +02:00
96e6b5d018 Add dynamic synced plugin config provider 2023-03-12 00:28:15 +02:00
c5ef9a9ebb fix app logo is draggable 2023-03-10 15:14:07 +02:00
4ace5e3647 Rename Release single instance lock to Single instance lock 2023-03-09 19:40:50 +02:00
TC
476e13de9f Update yarn.lock for latest package.json 2023-03-08 21:29:04 +01:00
659cb35525 Merge pull request #1056 from th-ch/snyk-upgrade-10b2d3763ea9ee07c6cd4884a5661cfa
[Snyk] Upgrade html-to-text from 9.0.3 to 9.0.4
2023-03-08 21:26:49 +01:00
a507a8cd71 Merge pull request #988 from Araxeus/in-app-menu-icon
[in-app-menu] add toggle menu icon
2023-03-08 21:21:59 +01:00
8cca8c89b3 Merge pull request #1048 from Araxeus/fix-playback-speed-selector
Fix playback speed slider not showing and PiP button showing when it shouldn't
2023-03-08 21:15:36 +01:00
476b45096c Merge pull request #1052 from Araxeus/fix-lyrics-bugs
[lyrics-genius] Fix lyrics not showing up or showing up when they shouldn't
2023-03-08 21:12:25 +01:00
43be177b66 Merge pull request #1055 from Araxeus/fix-in-app-menu-drag-area
[in-app-menu] disable nav-bar drag when menu is open
2023-03-08 21:10:07 +01:00
2edeab567f Merge pull request #946 from Araxeus/use-ToastXML
[Notifications] [Windows] Native interactive notifications
2023-03-08 20:59:34 +01:00
26fb48fd37 Merge pull request #1049 from Araxeus/automate-winget-releases
automate winget releases
2023-03-08 20:52:10 +01:00
c5781962f4 lint 2023-03-05 18:56:04 +02:00
61dd477c27 fix: upgrade html-to-text from 9.0.3 to 9.0.4
Snyk has created this PR to upgrade html-to-text from 9.0.3 to 9.0.4.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2023-03-04 14:21:37 +00:00
6ca64d68ca show ffmpeg progress 2023-03-04 16:17:39 +02:00
ad484ab745 use centralized config 2023-03-04 15:48:15 +02:00
7b3280c12b add skip existing files option 2023-03-04 15:17:54 +02:00
cd41f093be fix download button not showing first time menu is opened 2023-03-04 15:15:01 +02:00
a2eb3a3319 helpful error when trying to download a private or "mixed for you" playlist 2023-03-04 14:16:22 +02:00
e4b1d38f85 dont add album to metadata if it's ===N/A 2023-03-04 13:51:18 +02:00
560e323893 lint 2023-03-04 13:40:03 +02:00
a31e59fbc7 fix download button showing when it shouldn't 2023-03-04 13:39:49 +02:00
2cbc73d2ed remove unused imports 2023-03-04 12:31:03 +02:00
099e5d8491 add download feedback and progress 2023-03-04 12:12:23 +02:00
54d3f925e6 add trackId to album downloads 2023-03-04 01:53:19 +02:00
ec6107138d remove node-id3 2023-03-04 01:09:07 +02:00
83d7befc45 disable nav-bar drag when menu is open 2023-03-03 23:37:24 +02:00
b6f9404ff5 download using youtubei,js instead of ytdl-core 2023-03-03 23:19:23 +02:00
16a0b6a893 add slight delay to lyrics genius
this allows youtube to finish doing it's stuff

fix #1041 and other lyrics issues
2023-03-02 19:55:17 +02:00
9ff40611ce fix unescaped url params
fix #1050
2023-03-02 18:18:13 +02:00
f2d20d05c4 [winget] add installer regex 2023-02-28 23:34:40 +02:00
f650ee1e70 automate winget releases 2023-02-28 22:42:02 +02:00
ab7ba1c280 fix PiP button showing in non player-bar menu's 2023-02-28 21:10:28 +02:00
c4ced889b5 resolve merge error 2023-02-28 20:35:10 +02:00
79e71dae26 fix playback speed selector
replace querying for the text `Stats` (which is language specific)
with querying that the event origin is the button on the player-bar

fix #1045
2023-02-28 19:56:16 +02:00
87cbdc3dc3 fix potential empty notification showing 2023-02-17 18:05:16 +02:00
a3c5be0cc2 Merge branch 'local-upstream/master' into use-ToastXML 2023-02-17 18:02:30 +02:00
0e3982d199 Merge branch 'local-upstream/master' into in-app-menu-icon 2023-02-17 17:44:48 +02:00
8bfbbca044 Merge pull request #1029 from th-ch/windows-arm-build
build win target on ARM
2023-02-15 21:09:04 +01:00
TC
35fa794395 build win target on ARM 2023-02-15 20:52:36 +01:00
TC
bfb392a326 Use a promise to wait for transitions in crossfade plugin 2023-02-12 20:00:48 +01:00
TC
8adfcdc002 Replace all | in title (codeQL fix) 2023-02-12 19:21:04 +01:00
TC
4ec0b7ff30 Bump yarn.lock 2023-02-12 19:13:20 +01:00
0e683444d3 Merge pull request #961 from xhayper/patch-1
feat: auto reconnect rpc and CSP fix
2023-02-12 19:12:44 +01:00
7282a227fd Merge branch 'master' into patch-1 2023-02-12 19:08:54 +01:00
c0d0c267a7 Merge branch 'local-upstream/master' into in-app-menu-icon 2023-02-12 19:58:10 +02:00
6577bcdad8 Merge pull request #989 from Araxeus/in-app-menu-draggable-navbar
[in-app-menu] make navbar draggable
2023-02-12 18:50:56 +01:00
34f56df2ec Merge pull request #1013 from th-ch/native-pip
Add option `useNativePiP` in PiP plugin to use native PiP
2023-02-12 18:50:26 +01:00
TC
7f66ff2c0c Merge branch 'master' of github.com:th-ch/youtube-music into native-pip
* 'master' of github.com:th-ch/youtube-music:
  fix PiP hotkey active in searchbox
  remove titlebar from in-app-menu+PiP
  Bump "@cliqz/adblocker-electron" version
  Only run the release stage if it is the main repo
  Only build without release if it is a fork
  Use del-cli instead of del (for windows)
  Replace electron-icon-maker by a more up-to-date fork
  Adapt CI to yarn v3
  Migrate to yarn v3
  Track transitioning status
  Fixed recursive volume changes that caused cpu spike, Switched Repeat Modes to NONE|ONE|ALL
  Remove references to rimraf
  Add first version for crossfade plugin
  removed unnecessary if and used better Repeat change detection
  connected mpris shuffle, fixed volume, mpris volumes allowed 0.0-1.0
  fixed 'repeatChanged' modes being different depending on selected youtube music language
  fix precise-volume+searchbox interaction
  fix navbar position
2023-02-12 18:41:52 +01:00
735fd39c3c Merge pull request #1025 from Araxeus/fix-PiP-hotkey-active-in-search
[PiP] fix hotkey activating when typing in the search box
2023-02-12 18:34:29 +01:00
7df7b32eea Merge pull request #1024 from Araxeus/in-app-menu-pip-no-titlebar
[PiP] Remove titlebar when in-app-menu is enabled
2023-02-12 18:33:04 +01:00
d9f1c589e9 fix PiP hotkey active in searchbox 2023-02-10 20:14:07 +02:00
5dd8d1a274 remove titlebar from in-app-menu+PiP
Results in an experience similar to the native PiP, except plugins can work (for example precise-volume)
2023-02-10 18:52:51 +02:00
2f117117d8 lint 2023-02-10 01:37:42 +02:00
d8a6453a8d Merge branch 'local-upstream/master' into in-app-menu-icon 2023-02-10 00:14:39 +02:00
27d8bbdf85 Merge branch 'local-upstream/master' into use-ToastXML 2023-02-09 23:55:13 +02:00
7bdbab5a2d Merge pull request #1005 from Skydeke/master
[Shortcuts] MPRIS fixes, Repeat Language bug fix
2023-02-09 22:47:03 +01:00
96f23ea8d5 Merge branch 'local-upstream/master' into use-ToastXML 2023-02-09 23:43:26 +02:00
0a8ac31c1e Merge branch 'master' into master 2023-02-09 22:42:39 +01:00
e0d7117970 Merge pull request #1023 from th-ch/build-without-release-in-forks
Build without release in forks
2023-02-09 22:39:34 +01:00
TC
e70f843ac3 Bump "@cliqz/adblocker-electron" version 2023-02-09 22:38:07 +01:00
7932408b47 Merge pull request #997 from Araxeus/fix-navbar-position
[in-app-menu] fix navbar position
2023-02-09 22:33:45 +01:00
97c6cad503 Avoid video pause
Co-authored-by: Araxeus <oaeben@gmail.com>
2023-02-09 22:33:07 +01:00
455a89ad28 Merge pull request #1022 from th-ch/yarn-new-version
Migrate to yarn v3
2023-02-09 22:11:49 +01:00
TC
9ec07b5fb7 Only run the release stage if it is the main repo 2023-02-09 22:11:26 +01:00
TC
b9aa6ffdd4 Only build without release if it is a fork 2023-02-09 22:08:40 +01:00
ff1847d1e2 Merge branch 'local-upstream/master' into use-ToastXML 2023-02-09 18:51:24 +02:00
fa4a55f97e Merge branch 'master' into patch-1 2023-02-09 10:06:35 +07:00
TC
781a726f4b Add menu option for native PiP 2023-02-08 23:46:43 +01:00
TC
0b49d57969 Always listen for toggle 2023-02-08 23:46:24 +01:00
70c55ca587 Merge pull request #1002 from Araxeus/fix-searchbox+precise-volume-interaction
[precise-volume] fix arrows shortcuts active in search box
2023-02-08 23:30:40 +01:00
TC
3277a8e6c9 Use del-cli instead of del (for windows) 2023-02-08 22:20:44 +01:00
TC
9c54fccf93 Replace electron-icon-maker by a more up-to-date fork 2023-02-08 22:20:44 +01:00
TC
f3a6d4dd18 Adapt CI to yarn v3 2023-02-08 22:20:42 +01:00
TC
721b048151 Migrate to yarn v3 2023-02-08 22:13:32 +01:00
35859a6c3a Merge pull request #1012 from th-ch/crossfade-plugin
[new plugin] Add first version for crossfade plugin
2023-02-07 21:35:28 +01:00
TC
7f099eef4e Track transitioning status 2023-02-06 23:21:12 +01:00
9da0e4305f Fixed recursive volume changes that caused cpu spike, Switched Repeat Modes to NONE|ONE|ALL 2023-02-03 12:03:17 +01:00
a81476100b Merge branch 'th-ch:master' into master 2023-02-03 12:02:53 +01:00
TC
7cbc99fc19 Remove references to rimraf 2023-02-01 23:23:34 +01:00
TC
8a9a3fc69d Add option useNativePiP in PiP plugin to use native PiP 2023-02-01 22:25:33 +01:00
TC
f422b25cb6 Add first version for crossfade plugin 2023-02-01 22:19:39 +01:00
TC
d44fb5c840 Fix audio source not connected to the context 2023-01-31 13:49:50 +01:00
TC
b4713196fe Fix audio-compressor plugin by only applying it once 2023-01-31 13:49:26 +01:00
8bf2c8397e removed unnecessary if and used better Repeat change detection 2023-01-28 20:36:31 +01:00
317e3af412 connected mpris shuffle, fixed volume, mpris volumes allowed 0.0-1.0 2023-01-28 15:43:16 +01:00
a4a3564136 fixed 'repeatChanged' modes being different depending on selected youtube music language 2023-01-28 15:42:32 +01:00
bc49e09810 fix precise-volume+searchbox interaction 2023-01-24 00:45:34 +02:00
79890e019a fix navbar position 2023-01-22 20:22:14 +02:00
70361afbaf use css instead of js 2023-01-22 19:25:29 +02:00
333b695b16 lint 2023-01-22 19:18:10 +02:00
c6bb0cfe88 remove draggable attribute if search box is open 2023-01-19 19:16:01 +02:00
b665343fd9 make navbar draggable [in-app-menu] 2023-01-19 18:52:40 +02:00
236034a1f9 bump custom-electron-titlebar 2023-01-19 17:33:35 +02:00
c61a719f59 Merge branch 'master' into patch-1 2023-01-19 13:14:32 +07:00
96b1b69629 hide menu in PiP+in-app-menu if hideMenu is enabled 2023-01-19 02:33:43 +02:00
1eb0269434 Differentiate between refresh/toggle menu
+ visible now checks the actual state to fix PiP bugs
2023-01-19 02:32:57 +02:00
5909af42d2 Update readme.md 2023-01-19 02:05:16 +02:00
4eaeaafa7c add menu icon to in-app-menu 2023-01-19 01:43:28 +02:00
fe42f8d953 fix upstream merge bug 2023-01-18 19:19:40 +02:00
0f09f8a8ed Merge pull request #984 from th-ch/th-ch/fix-bypass-age-import
Fix bypass-age-restriction lib import
2023-01-17 21:58:42 +01:00
cb2c9fe1cd re-create yarn.lock 2023-01-16 22:28:34 +02:00
b5cddd2d49 Merge branch 'local-upstream/master' into use-ToastXML 2023-01-16 21:36:47 +02:00
4957bccaad prepare for merge 2023-01-16 21:32:18 +02:00
TC
b518866d24 Fix bypass-age-restriction lib import 2023-01-15 21:12:12 +01:00
a51ed89281 Merge pull request #977 from th-ch/th-ch/option-to-copy-url
Add menu entry to copy current URL
2023-01-15 20:45:27 +01:00
3482ec4ec7 Merge pull request #979 from th-ch/th-ch/remove-deprecated-code
Remove deprecated code
2023-01-15 20:41:40 +01:00
TC
3c3530367a nit: trim trailing whitespace 2023-01-15 14:43:22 +01:00
TC
fae1f67a64 Remove deprecated code with electron v22 2023-01-15 14:43:06 +01:00
TC
eb9b0b4cd1 Use electron clipboard 2023-01-15 14:39:36 +01:00
91e111d483 feat: apply suggestion 2023-01-15 10:59:56 +07:00
dbfddebbc2 feat: auto reconnect rpc and CSP fix 2023-01-15 09:57:35 +07:00
TC
b541dd0312 Add menu entry to copy current URL 2023-01-14 23:10:45 +01:00
3a822f611a Merge pull request #976 from th-ch/th-ch/update-dev-deps
Update dev dependencies
2023-01-14 22:58:58 +01:00
TC
0c53f7ffeb Update dev dependencies 2023-01-14 17:15:17 +01:00
acdff69919 Merge pull request #974 from th-ch/th-ch/update-electron-and-other-dependencies
Update electron and various dependencies
2023-01-14 17:02:06 +01:00
TC
a80219ae40 Update electron and various dependencies 2023-01-14 16:40:07 +01:00
fecafe5a19 Merge pull request #973 from th-ch/th-ch/dependency-review
Add CI job for dependency review
2023-01-14 16:26:33 +01:00
TC
a8769faea8 Add captions plugin readme 2023-01-14 16:21:23 +01:00
3ed4a30915 Merge pull request #972 from th-ch/th-ch/captions-plugin
Improve captions plugin
2023-01-14 16:16:42 +01:00
TC
832195f29c Add CI job for dependency review 2023-01-14 16:15:19 +01:00
9869063a5d Merge pull request #817 from anytarseir67/master
fix malformed json in tuna-obs
2023-01-14 16:11:48 +01:00
TC
b63e7ed402 Use custom-electron-prompt in caption selector 2023-01-14 16:08:33 +01:00
TC
1b7bb4703a Snakecase template name 2023-01-14 16:07:24 +01:00
2cc347ff94 Merge branch 'master' into use-ToastXML 2023-01-14 16:08:34 +02:00
4674a25746 Merge pull request #866 from LetrixZ/master
Add Captions selector
2023-01-14 15:06:09 +01:00
237423da1d Merge branch 'master' into master 2023-01-14 15:02:01 +01:00
6edc94ae98 Merge pull request #941 from Araxeus/fix-snoretoast
fix SnoreToast implementation
2023-01-14 15:00:32 +01:00
98e677a76f Merge pull request #942 from th-ch/dependabot/npm_and_yarn/json5-1.0.2
Bump json5 from 1.0.1 to 1.0.2
2023-01-14 14:57:46 +01:00
d289b30782 Merge pull request #969 from th-ch/snyk-upgrade-a42642fbff21eea4c8d029ab972233d2
[Snyk] Upgrade custom-electron-titlebar from 4.1.3 to 4.1.5
2023-01-14 14:56:35 +01:00
9b14a274ce Merge pull request #956 from MiepHD/master
Fixed video-toggle aligning running before #main-panel exists
2023-01-14 14:55:51 +01:00
7701c03e2b Merge pull request #953 from th-ch/visualizer-plugin
[New plugin] Music visualizers
2023-01-14 14:53:29 +01:00
0cf72074f3 Merge pull request #964 from Araxeus/fix-PiP-button
fix PiP buttons not showing up
2023-01-14 14:47:31 +01:00
TC
6e96b355bd Add migration for visualizer plugin 2023-01-14 14:44:02 +01:00
210a16a32b Update back.js 2023-01-14 14:36:40 +01:00
3389679287 fix: upgrade custom-electron-titlebar from 4.1.3 to 4.1.5
Snyk has created this PR to upgrade custom-electron-titlebar from 4.1.3 to 4.1.5.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2023-01-14 02:08:25 +00:00
06eacea9a5 fix misnamed options in menu 2023-01-13 00:28:30 +02:00
759b3844db lint 2023-01-12 20:51:33 +02:00
2b4e996743 add migrations 2023-01-12 20:35:42 +02:00
0e99f96f01 fix PiP unminimize button hidden 2023-01-12 19:58:44 +02:00
b3f561cf2f disable maximize button on PiP
(doesn't work if `in-app-menu` is enabled)
2023-01-12 19:58:36 +02:00
f9820df6c6 fix PiP button
fix #959
2023-01-12 19:18:58 +02:00
bc5023c360 Add 2 more config options
refreshOnPlayPause: false
trayControls: true,
2023-01-09 23:46:44 +02:00
1c5d61854e fixes from pr review 2023-01-09 19:20:11 +02:00
a8f3451e04 Merge branch 'th-ch:master' into master 2023-01-09 18:18:44 +01:00
8728784c02 Fixed running before #main-panel exists 2023-01-09 18:16:33 +01:00
TC
b77c62128e Implement visualizer plugin 2023-01-09 09:23:40 +01:00
70522173b7 Interactive Notifications v2 2023-01-09 00:07:07 +02:00
35bd62cc0d Merge pull request #951 from th-ch/audio-context-source
Use same audio context/source everywhere
2023-01-08 19:38:09 +01:00
TC
52b67af59c Use same audio context/source everywhere 2023-01-08 19:17:40 +01:00
027d4ce3f0 Added variations for testing
`xml_logo_ascii`
`xml_logo_icons`
`xml_logo_icons_notext`
`xml_hero`
`xml_banner_bottom`
`xml_banner_top_custom`
`xml_banner_centered_bottom`
`xml_banner_centered_top`
2023-01-08 13:12:01 +02:00
05d0ac963a re-add cover_url 2023-01-07 20:47:13 -05:00
97c5dc25be save temp icons for file:/// protocol 2023-01-08 01:29:44 +02:00
14b0315ed9 add back to front logger 2023-01-08 01:29:20 +02:00
2c49f6c740 use Electron with ToastXML instead of SnoreToast
* Add support for protocol commands
* Remove node-notifier dependency
2023-01-07 22:06:46 +02:00
bc23131e48 Bump json5 from 1.0.1 to 1.0.2
Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-07 04:35:10 +00:00
e6146940b1 revert #600 2023-01-07 05:34:24 +02:00
3412b3504f use snoretoast CLSID 2023-01-07 05:23:42 +02:00
fcb92fda84 Update changelog for v1.19.0 2022-12-31 12:48:44 +00:00
TC
51fdbe2086 Bump version to 1.19.0 2022-12-31 13:32:27 +01:00
74535b696c Merge pull request #936 from th-ch/github-action-publish-release
Automatic release by CI when version is updated
2022-12-30 19:18:43 +01:00
TC
31ab27c39f Bump version and change release type when publishing a new version 2022-12-30 19:09:32 +01:00
a13606b361 Merge pull request #894 from MiepHD/master
Center toggle of video-toggle
2022-12-29 22:37:55 +01:00
TC
d0ed64928d Update readme to get have precise build instructions 2022-12-28 17:54:27 +01:00
2b8b825f4c Merge branch 'th-ch:master' into master 2022-12-28 14:50:15 +01:00
74c9fe13e2 Added option to change alignment of video-toggle 2022-12-28 10:23:11 +01:00
a2a2f18058 Merge pull request #890 from th-ch/load-plugins-on-window-creation
Load plugins as soon as the window is created
2022-12-27 18:41:50 +01:00
e587f02bd9 Merge pull request #913 from th-ch/dependabot/npm_and_yarn/qs-6.5.3
Bump qs from 6.5.2 to 6.5.3
2022-12-27 18:40:06 +01:00
c38c416813 Bump qs from 6.5.2 to 6.5.3
Bumps [qs](https://github.com/ljharb/qs) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.5.2...v6.5.3)

---
updated-dependencies:
- dependency-name: qs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-27 17:27:53 +00:00
138b6df5a4 Merge pull request #900 from th-ch/snyk-upgrade-cf02914a196acf6d7c9613f310f238f5
[Snyk] Upgrade custom-electron-titlebar from 4.1.1 to 4.1.2
2022-12-27 18:27:24 +01:00
cf2add8d91 Merge pull request #931 from th-ch/th-ch/skip-silences-beginning
Add option in skip-silences plugin to only skip at the beginning
2022-12-27 17:29:50 +01:00
453fe3f87a Merge pull request #932 from th-ch/rimraf-del
Replace rimraf by del-cli
2022-12-27 17:28:52 +01:00
TC
ccedb17545 Replace rimraf by del-cli 2022-12-26 23:33:30 +01:00
TC
43c501b6d8 Add option in skip-silences plugin to only skip at the beginning 2022-12-26 18:46:52 +01:00
TC
a1bed628f4 Update build badge 2022-12-25 23:16:18 +01:00
7052a74a77 Merge pull request #873 from Nixxen/master
docs: Added winget install instructions
2022-12-25 23:12:44 +01:00
254758a4f2 fix: upgrade custom-electron-titlebar from 4.1.1 to 4.1.2
Snyk has created this PR to upgrade custom-electron-titlebar from 4.1.1 to 4.1.2.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-11-28 08:48:16 +00:00
5d85108c8a doc: Updated readme to include note about MSDSS 2022-11-23 00:40:04 +01:00
46bfec299c Centered toggle 2022-11-22 17:56:23 +01:00
de7bc828b1 Appended directly to the main-panel 2022-11-22 17:55:50 +01:00
TC
335d515e22 Do not skip silences if volume is 0 or video is muted 2022-11-20 21:54:23 +01:00
TC
3fb219fcd1 Bump age restriction plugin 2022-11-20 21:15:05 +01:00
64114e8e9d Merge pull request #855 from th-ch/snyk-upgrade-0a2e4b6ab9f1a14b5e27d5de213bed41
[Snyk] Upgrade async-mutex from 0.3.2 to 0.4.0
2022-11-20 21:03:00 +01:00
ca6225d47b Merge pull request #856 from th-ch/snyk-upgrade-745c57baec21283a223fa43b3f450118
[Snyk] Upgrade @cliqz/adblocker-electron from 1.25.0 to 1.25.1
2022-11-20 21:01:23 +01:00
bf580645ae Merge pull request #865 from th-ch/snyk-upgrade-307bfc7d5d38af8f17908cd31fafc230
[Snyk] Upgrade custom-electron-titlebar from 4.1.0 to 4.1.1
2022-11-20 20:59:57 +01:00
4361cf2b2b Merge pull request #876 from th-ch/snyk-upgrade-fc79a6530d88cc21f2f068311b2363b9
[Snyk] Upgrade @ffmpeg/ffmpeg from 0.11.5 to 0.11.6
2022-11-20 20:59:22 +01:00
TC
c2fbc89b91 Load plugins as soon as the window is created 2022-11-20 20:30:35 +01:00
3605e32b25 Merge pull request #888 from Zo-Bro-23/master
Discord Plugin RPC Fix
2022-11-20 20:25:57 +01:00
49eae89886 Update back.js 2022-11-20 17:34:20 +05:30
ee01ae1c00 Update back.js 2022-11-20 17:33:06 +05:30
d199a5fce9 Update back.js 2022-11-20 16:21:32 +05:30
350e8fb706 fix: upgrade @ffmpeg/ffmpeg from 0.11.5 to 0.11.6
Snyk has created this PR to upgrade @ffmpeg/ffmpeg from 0.11.5 to 0.11.6.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-11-11 23:13:48 +00:00
3fdc6e2f09 docs: Added winget install instructions 2022-11-06 18:34:54 +01:00
938210e8f9 Plugin Captions Selector - Add disable captions by default 2022-10-22 01:49:16 -03:00
c8a852bf2e Plugin Captions Selector - Check if there is caption tracks available, add "disable captions" 2022-10-22 01:13:04 -03:00
f58c10b02d Plugin Captions Selector - Add new line 2022-10-22 01:01:25 -03:00
c281b8ba98 Plugin: Captions Selector 2022-10-22 01:00:15 -03:00
1fef3c4aab fix: upgrade custom-electron-titlebar from 4.1.0 to 4.1.1
Snyk has created this PR to upgrade custom-electron-titlebar from 4.1.0 to 4.1.1.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-10-19 17:03:11 +00:00
762ef4eede fix: upgrade @cliqz/adblocker-electron from 1.25.0 to 1.25.1
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.25.0 to 1.25.1.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-10-10 00:44:14 +00:00
fe9b26ebdd fix: upgrade async-mutex from 0.3.2 to 0.4.0
Snyk has created this PR to upgrade async-mutex from 0.3.2 to 0.4.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-10-10 00:44:11 +00:00
77173c1347 Merge pull request #854 from th-ch/bump-ffmpeg
Bump FFMpeg
2022-10-09 13:15:59 +02:00
TC
be3a2880eb Bump FFMpeg 2022-10-09 12:32:26 +02:00
d761d92861 Merge pull request #823 from th-ch/snyk-upgrade-da17b83c582728aa38ca18a57844b1ef
[Snyk] Upgrade @cliqz/adblocker-electron from 1.23.8 to 1.23.9
2022-10-09 12:16:55 +02:00
0e7fd4d36d Merge pull request #801 from th-ch/snyk-upgrade-1bb0065cafdd8e20657abaf4608e914b
[Snyk] Upgrade electron-store from 8.0.2 to 8.1.0
2022-10-09 12:15:11 +02:00
073ea27bba Merge pull request #802 from amsyarasyiq/master
proposal: Adding an option to hide duration before the song ends
2022-10-09 12:12:10 +02:00
9441a6a694 Merge pull request #790 from th-ch/snyk-fix-7c02df943121127bc4ba140fcd2b10b7
[Snyk] Security upgrade node-fetch from 2.6.7 to 3.2.10
2022-10-09 12:06:19 +02:00
TC
c9f610f7fc Lock node-fetch to v2 for commonJS 2022-10-09 12:04:47 +02:00
22b75bbfeb Merge pull request #807 from kerichdev/patch-1
Update README.md with a new theme repo
2022-10-09 11:59:45 +02:00
0063be02fb Merge pull request #822 from andrew-mathieu/andrew-mathieu-patch-1
Fix likes on touchbar (they were inverted)
2022-10-09 11:55:45 +02:00
cc1c13cece Merge pull request #839 from pcgeek86/patch-1
Add Scoop install directions for Windows 🪟
2022-10-09 11:55:13 +02:00
TC
7f96c89f41 Remove jest config (not used anymore) 2022-10-09 11:53:57 +02:00
cdb8bdcfb4 Add Scoop install directions for Windows 🪟 2022-09-20 14:11:39 -06:00
8c817e0862 fix: upgrade @cliqz/adblocker-electron from 1.23.8 to 1.23.9
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.23.8 to 1.23.9.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-09-09 23:20:14 +00:00
b4ec6a791d Fix likes on touchbar (they were inverted)
When we tap on "👍", it doesn't leave a like but does the opposite
2022-09-09 03:10:22 +02:00
82ced02a5e fix malformed json in tuna-obs 2022-09-05 04:07:46 -04:00
TC
b843825f72 Bump version to 1.18.0 2022-09-05 08:48:06 +02:00
b66d3bc3d4 Merge pull request #816 from th-ch/fix-downloader
Bump ytdl-core (bug fix)
2022-09-05 08:45:22 +02:00
TC
9adabd41d9 Bump ytdl-core (bug fix) 2022-09-05 00:43:58 +02:00
TC
3f3df09819 Set NODE_ENV programmatically 2022-09-05 00:38:24 +02:00
TC
1f5f597561 Prepare migration for sandboxing (path.join in preload) 2022-09-05 00:31:29 +02:00
TC
91e4433aba Hide login button in plugin 2022-09-04 23:56:41 +02:00
2d3ce4a8b3 Merge pull request #813 from th-ch/fix-tests
Bump electron and fix tests in CI
2022-09-04 23:36:19 +02:00
TC
971b7f05c5 Bump electron to latest version 2022-09-04 22:32:16 +02:00
TC
bb6115fec1 Remove jest 2022-09-04 22:24:09 +02:00
TC
2a6dc30366 Remove test environment 2022-09-04 22:24:09 +02:00
TC
5e2d843742 Migrate to playwright/test 2022-09-04 22:24:09 +02:00
TC
7aaef26cc8 Add electron flags in tests 2022-09-04 22:21:51 +02:00
TC
0a08eaaa3c Skip downloading browsers in playwright 2022-09-04 22:21:43 +02:00
8bbf18cd6b Update README.md with a new theme repo
The repo referenced is currently unmaintained, so I made a fork with some fixes and improvements, with more to come. Maybe a good idea to reference it as well / replace it?
2022-08-31 10:55:43 +03:00
TC
0d22446f20 Bump playwright and electron 2022-08-25 23:03:38 +02:00
a0543d15a6 Merge pull request #800 from th-ch/custom-css-file
Allow user to pass custom CSS file
2022-08-25 22:52:42 +02:00
TC
e62ee35b42 Rename cssFiles option to themes and add menu entry 2022-08-25 22:50:33 +02:00
927596d0c1 fix: set default option for hideDurationLeft 2022-08-23 22:56:14 +08:00
0c0cb0501c Add an option to hide duration before the song ends 2022-08-23 21:00:52 +08:00
a2847c5007 fix: upgrade electron-store from 8.0.2 to 8.1.0
Snyk has created this PR to upgrade electron-store from 8.0.2 to 8.1.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-08-22 23:39:40 +00:00
TC
ef6fb402bf Allow user to pass custom CSS file 2022-08-21 23:36:02 +02:00
a8301f44be Merge pull request #799 from th-ch/snyk-upgrade-260cfeaaaf6aa5359f78e9f589e807a0
[Snyk] Upgrade html-to-text from 8.2.0 to 8.2.1
2022-08-21 22:54:52 +02:00
1ead86a220 Merge pull request #772 from th-ch/snyk-upgrade-3ee19fd614169422c21264d4fe016fa1
[Snyk] Upgrade electron-store from 8.0.1 to 8.0.2
2022-08-21 22:54:14 +02:00
03e716fe17 Merge pull request #756 from th-ch/dependabot/npm_and_yarn/jpeg-js-0.4.4
Bump jpeg-js from 0.4.3 to 0.4.4
2022-08-21 22:53:54 +02:00
f0bb328981 Merge pull request #749 from foonathan/master
Support MPRIS loop and volume change
2022-08-21 22:53:29 +02:00
f40183f0ca fix: upgrade html-to-text from 8.2.0 to 8.2.1
Snyk has created this PR to upgrade html-to-text from 8.2.0 to 8.2.1.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-08-20 22:45:27 +00:00
5b004acdc1 Update readme.md 2022-08-12 20:19:49 +02:00
f6b3347d0a fix: package.json & yarn.lock to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-NODEFETCH-2964180
2022-07-31 23:37:38 +00:00
0f96da9928 Change volume observer 2022-07-14 20:59:35 +02:00
dfba3d9c2d Support precise volume changes in MPRIS when possible 2022-07-11 20:20:13 +02:00
d9c51063f4 Add MPRIS volume control
Fixes #776.
2022-07-11 19:55:16 +02:00
cd9012691a fix: upgrade electron-store from 8.0.1 to 8.0.2
Snyk has created this PR to upgrade electron-store from 8.0.1 to 8.0.2.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-07-01 19:06:53 +00:00
2499f574ef Use triple equals in more places 2022-06-26 19:43:03 +02:00
e7e873866d Use triple equals 2022-06-26 17:37:25 +02:00
4ccbc741b8 Merge pull request #742 from th-ch/snyk-upgrade-45c0c305b24fe7d1bf9286a6c90b0320
[Snyk] Upgrade @cliqz/adblocker-electron from 1.23.7 to 1.23.8
2022-06-25 21:23:52 +02:00
8ec965a1a4 Merge pull request #745 from lukaszg84/master
Use ; instead of space for play/pause.
2022-06-25 21:22:50 +02:00
0936e9a258 Merge pull request #750 from EsmailELBoBDev2/patch-1
Update readme.md
2022-06-25 21:20:10 +02:00
32a5597573 Merge pull request #753 from Araxeus/fix-lyrics-font-size
fix lyrics font size
2022-06-25 21:18:44 +02:00
9932fd7647 Fix mpris playback status on play/pause 2022-06-22 18:30:49 +02:00
68429be1ce Bump jpeg-js from 0.4.3 to 0.4.4
Bumps [jpeg-js](https://github.com/eugeneware/jpeg-js) from 0.4.3 to 0.4.4.
- [Release notes](https://github.com/eugeneware/jpeg-js/releases)
- [Commits](https://github.com/eugeneware/jpeg-js/compare/v0.4.3...v0.4.4)

---
updated-dependencies:
- dependency-name: jpeg-js
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-17 01:59:01 +00:00
d7ac493337 fix lyrics font size 2022-06-16 17:21:13 +03:00
686a0a340e Update readme.md 2022-06-14 20:37:32 +02:00
bba499044b Style changes for review 2022-06-14 19:43:36 +02:00
6e1c50ede1 Support MPRIS loop 2022-06-14 15:45:58 +02:00
6e739e2723 Use ; instead of space for play/pause. 2022-06-10 11:08:36 +02:00
86029a0a73 fix: upgrade @cliqz/adblocker-electron from 1.23.7 to 1.23.8
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.23.7 to 1.23.8.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-06-07 19:11:28 +00:00
b458925aa6 Merge pull request #734 from Araxeus/fix-in-app-menu-top-gap
fix top gap between nav-bar and browse-page
2022-06-06 20:51:11 +02:00
86a1c3c850 Merge pull request #605 from Araxeus/migrate-from-remote-to-ipc
migrate from remote to ipc + fix restart in portable app
2022-06-06 20:48:59 +02:00
8666f934cd Merge pull request #717 from th-ch/snyk-upgrade-7b576b920d24e12003dead59064f8564
[Snyk] Upgrade custom-electron-prompt from 1.4.2 to 1.5.0
2022-06-06 20:40:40 +02:00
59a93916a8 Merge pull request #685 from Araxeus/pip-part-2
Picture in Picture v2
2022-06-06 20:36:18 +02:00
f06a3c8c70 fix top gap between nav-bar and browse-page 2022-05-28 19:22:14 +03:00
7fe937b21e lint 2022-05-20 19:26:55 +03:00
a4aa22aae9 update Electron 2022-05-18 20:21:37 +03:00
TC
96b2aab683 Bump version and changelog to 1.17.0 2022-05-16 18:47:00 +02:00
54d25a26c7 fix: upgrade custom-electron-prompt from 1.4.2 to 1.5.0
Snyk has created this PR to upgrade custom-electron-prompt from 1.4.2 to 1.5.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-05-12 19:29:13 +00:00
f5622970c6 Merge branch 'master' into migrate-from-remote-to-ipc 2022-05-01 23:09:13 +03:00
ea09825ece Merge branch 'master' into pip-part-2 2022-05-01 23:06:30 +03:00
247764b64b Merge pull request #712 from th-ch/dependabot/npm_and_yarn/ejs-3.1.7
Bump ejs from 3.1.6 to 3.1.7
2022-05-01 22:04:08 +02:00
5e187b47d8 Merge pull request #693 from Araxeus/fix-event-listener-overload
fix injectCSS `did-finish-load` listener overload
2022-05-01 22:03:01 +02:00
1194befa48 Merge pull request #689 from th-ch/snyk-upgrade-809de6dcc81fbd20573d9ed4667b0c70
[Snyk] Upgrade @cliqz/adblocker-electron from 1.23.6 to 1.23.7
2022-05-01 22:01:17 +02:00
74d3358487 Merge branch 'master' into snyk-upgrade-809de6dcc81fbd20573d9ed4667b0c70 2022-05-01 21:59:41 +02:00
769a613ea5 Merge pull request #686 from th-ch/snyk-upgrade-ded3705d02b70c981cf38d50be5ccece
[Snyk] Upgrade custom-electron-prompt from 1.4.1 to 1.4.2
2022-05-01 21:59:00 +02:00
7280e02709 Bump ejs from 3.1.6 to 3.1.7
Bumps [ejs](https://github.com/mde/ejs) from 3.1.6 to 3.1.7.
- [Release notes](https://github.com/mde/ejs/releases)
- [Changelog](https://github.com/mde/ejs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mde/ejs/compare/v3.1.6...v3.1.7)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-01 19:54:27 +00:00
7b3a767003 Merge pull request #684 from th-ch/snyk-upgrade-82480fa720c2520dafdd84fa5f54d19b
[Snyk] Upgrade @electron/remote from 2.0.7 to 2.0.8
2022-05-01 21:54:09 +02:00
96b0d4e367 Merge pull request #699 from Araxeus/improve-plugin-submenu-ux
Improve plugin submenu ux
2022-05-01 21:53:38 +02:00
TC
ae8365f721 Bump electron-builder to fix Mac build script 2022-05-01 21:52:42 +02:00
8d85bbf5ec Merge pull request #702 from Araxeus/update-build-action
update build action
2022-05-01 21:51:11 +02:00
61cd2ef9dc Merge pull request #700 from Araxeus/rip-video-toggle-plugin
add different modes to video-toggle plugin
2022-05-01 21:43:06 +02:00
3394d647a1 Merge pull request #701 from Araxeus/lint
lint
2022-05-01 21:35:36 +02:00
882ad63fa8 Merge pull request #703 from Araxeus/imgbot
[ImgBot] Optimize images
2022-05-01 21:34:31 +02:00
5fd88ce522 Merge pull request #695 from Araxeus/add-album-to-lastfm
add album to lastfm if available
2022-05-01 21:33:16 +02:00
de280195c5 Merge pull request #680 from Araxeus/in-app-menu-hide-icon-option
[in-app-menu] add hide icon option
2022-05-01 21:32:10 +02:00
7bd69e447a update Electron 2022-04-30 15:24:37 +03:00
357f12c4d1 [ImgBot] Optimize images
*Total -- 828.18kb -> 733.19kb (11.47%)

/assets/youtube-music-tray.png -- 3.29kb -> 1.44kb (56.14%)
/web/youtube-music.svg -- 9.23kb -> 5.75kb (37.67%)
/web/screenshot.jpg -- 815.67kb -> 726.00kb (10.99%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2022-04-23 02:52:10 +03:00
d164cd6fb9 update build action 2022-04-22 23:48:32 +03:00
5d3dc6442f stylelint: declaration-block-no-duplicate-properties 2022-04-22 16:58:49 +03:00
cb7c9bda16 eslint: no-unused-vars 2022-04-22 16:58:41 +03:00
6f2552814f stylelint: declaration-block-no-shorthand-property-overrides 2022-04-22 16:58:41 +03:00
9beebd3772 add different modes to video-toggle plugin
* Custom: like before but slightly position

* Native: use the native video-toggle

* Disabled: force disable the native video-toggle
2022-04-20 18:46:59 +03:00
7cd9506122 add separator after plugin enabled button 2022-04-20 18:27:34 +03:00
f6de5c7c22 PiP options defaults + migrations 2022-04-20 15:21:10 +03:00
2ac3df0455 add album to lastfm if available 2022-04-18 18:45:53 +03:00
2dfe098521 fix injectCSS did-finish-load listener overload 2022-04-17 18:20:08 +03:00
77d4e9cb84 add optional PiP hotkey 2022-04-15 15:57:48 +03:00
b420998458 disable the video-toggle button when in PiP mode 2022-04-15 15:27:31 +03:00
feb06b015e dont save maximized state in PiP mode 2022-04-15 15:27:16 +03:00
09ba760aff fix: upgrade @cliqz/adblocker-electron from 1.23.6 to 1.23.7
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.23.6 to 1.23.7.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-04-13 17:15:33 +00:00
0f192aab2b fix precise-volume position in PiP 2022-04-13 17:17:25 +03:00
c992ec4607 fix: upgrade custom-electron-prompt from 1.4.1 to 1.4.2
Snyk has created this PR to upgrade custom-electron-prompt from 1.4.1 to 1.4.2.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-04-11 17:03:23 +00:00
30840804fa fix: sync pip and index.js options 2022-04-11 00:15:19 +03:00
8000a8326f fix: in-app-menu bg color edge case
when item weren't initially rendered because the window was too small, but were then accessed via the arrow keys - backgrounds was missing
2022-04-10 21:39:06 +03:00
d23bfe9368 v3 2022-04-10 21:16:43 +03:00
047085e72b fix: upgrade @electron/remote from 2.0.7 to 2.0.8
Snyk has created this PR to upgrade @electron/remote from 2.0.7 to 2.0.8.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-04-10 16:51:23 +00:00
768ec7bda7 v2 2022-04-10 19:19:20 +03:00
c25a6f9d2a launch pip from video overlay v1 2022-04-10 01:12:06 +03:00
23058729f3 Merge pull request #682 from th-ch/bypass-age-restrictions-plugin
Add plugin to bypass age restrictions
2022-04-09 23:21:46 +02:00
TC
a1c6dfb199 Add plugin for age restrictions 2022-04-09 23:00:02 +02:00
TC
89ebc230e0 Add plugin to bypass age restrictions (with userscript) 2022-04-09 22:57:57 +02:00
b4b785d773 feat: in-app-menu hideIcon option 2022-04-09 22:56:01 +03:00
57ec0a463d Merge pull request #674 from th-ch/picture-in-picture-plugin
Add "Picture in picture" plugin
2022-04-09 21:53:34 +02:00
TC
6be9b76550 Improve style and remove draggable CSS that blocks login 2022-04-09 16:59:44 +02:00
TC
ebe3baf4bc Make PiP window bigger (follow up: make it configurable) 2022-04-09 16:59:24 +02:00
648d540ca9 Merge pull request #679 from th-ch/thibaut.c/lyrics-metadata-genius
Set lyrics metadata from Genius
2022-04-09 16:54:49 +02:00
cb910a6fd7 Merge branch 'master' into migrate-from-remote-to-ipc 2022-04-09 17:04:06 +03:00
TC
e071f768b4 Force minimist 1.2.6 to fix vuln 2022-04-09 15:21:59 +02:00
TC
05b6435a5c nit: lint package.json 2022-04-09 15:03:06 +02:00
TC
71e9f280a1 Set lyrics metadata if Genius plugin is enabled 2022-04-09 15:02:54 +02:00
TC
dbc34e6d0d Export fetchFromGenius util 2022-04-09 15:02:11 +02:00
TC
d0532d691e Process lyrics HTML in Genius util 2022-04-09 15:02:06 +02:00
2f218ef108 Merge pull request #677 from th-ch/tray-app-hidden
MacOS: bring back the app in dock when using tray + app hidden
2022-04-09 12:17:06 +02:00
TC
14326d2440 Only save size/position if not in PiP 2022-04-09 12:16:30 +02:00
TC
d37e557f79 Block some shortcuts (esc, f) in PiP 2022-04-09 12:15:38 +02:00
TC
5ca0c6b8a9 Ensure player is open when going PiP + add class 2022-04-09 12:14:42 +02:00
TC
e58a580b2b Restore fullscreenable after switching to PiP mode 2022-04-09 12:13:33 +02:00
TC
f3641f5072 Set in config when PiP mode is enabled 2022-04-09 12:11:05 +02:00
TC
296ecb6740 Always inject style 2022-04-09 12:10:22 +02:00
28b5645a56 Merge branch 'master' into migrate-from-remote-to-ipc 2022-04-08 17:00:49 +03:00
742a949680 Update plugins/picture-in-picture/back.js
Co-authored-by: Araxeus <oaeben@gmail.com>
2022-04-08 15:45:33 +02:00
57290c4164 Update plugins/picture-in-picture/back.js
Co-authored-by: Araxeus <oaeben@gmail.com>
2022-04-08 15:44:03 +02:00
6d5fe9561e Update plugins/picture-in-picture/back.js
Co-authored-by: Araxeus <oaeben@gmail.com>
2022-04-08 15:43:57 +02:00
735901095f Merge pull request #644 from th-ch/snyk-upgrade-1b73c27fe4a98c0629769eba2ee53e6a
[Snyk] Upgrade @electron/remote from 2.0.4 to 2.0.5
2022-04-08 15:42:35 +02:00
27454ab527 Merge pull request #660 from th-ch/snyk-upgrade-25706373301b148d087cae43d9039d28
[Snyk] Upgrade ytpl from 2.2.3 to 2.3.0
2022-04-08 15:41:46 +02:00
TC
c345d2cb34 Merge branch 'master' of github.com:th-ch/youtube-music into snyk-upgrade
* 'master' of github.com:th-ch/youtube-music:
  Bump plist from 3.0.2 to 3.0.5
  use spread syntax instead of Array.from
  Fix lyrics genius missing parts
  feat: option to force show like buttons
  Fix lyrics genius missing parts
  [precise-volume] fix expand-volume-slider not updating its value
  fix: upgrade ytdl-core from 4.10.1 to 4.11.0
  add always-on-top option
  fix volumeHud position in miniplayer
  fix: upgrade @cliqz/adblocker-electron from 1.23.4 to 1.23.5
2022-04-08 15:41:14 +02:00
1da297a356 Merge pull request #659 from th-ch/snyk-upgrade-943da220bfc070d47a809365f06e4136
[Snyk] Upgrade ytdl-core from 4.10.1 to 4.11.0
2022-04-08 15:33:12 +02:00
8ebdaf6fa0 Merge branch 'master' into snyk-upgrade-1b73c27fe4a98c0629769eba2ee53e6a 2022-04-08 15:31:29 +02:00
d4d82867f5 Merge pull request #678 from th-ch/dependabot/npm_and_yarn/plist-3.0.5
Bump plist from 3.0.2 to 3.0.5
2022-04-08 15:30:44 +02:00
2e99d6b9bb Bump plist from 3.0.2 to 3.0.5
Bumps [plist](https://github.com/TooTallNate/node-plist) from 3.0.2 to 3.0.5.
- [Release notes](https://github.com/TooTallNate/node-plist/releases)
- [Changelog](https://github.com/TooTallNate/plist.js/blob/master/History.md)
- [Commits](https://github.com/TooTallNate/node-plist/commits)

---
updated-dependencies:
- dependency-name: plist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-08 13:25:18 +00:00
a1e740b881 Merge pull request #624 from th-ch/snyk-upgrade-8a29fb2f6f9f73947c0629bb91d5a7f1
[Snyk] Upgrade @cliqz/adblocker-electron from 1.23.4 to 1.23.5
2022-04-08 15:24:47 +02:00
TC
de14d64927 nit: re-align quit menu 2022-04-08 15:17:36 +02:00
TC
6c93d635d0 Bring back the app in the dock (MacOS) when it was hidden 2022-04-08 15:17:26 +02:00
f4df6fceee Merge branch 'migrate-from-remote-to-ipc' of https://github.com/Araxeus/youtube-music into migrate-from-remote-to-ipc 2022-04-07 22:12:54 +03:00
d69c8a754e Merge branch 'local-upstream/master' into migrate-from-remote-to-ipc 2022-04-07 22:12:25 +03:00
c3d90d8b27 update Electron
+ update electron-unhandled
2022-04-07 22:09:54 +03:00
10681e4e99 Merge pull request #645 from Araxeus/fix-volumeHud-position-on-miniplayer
[Precise-Volume] fix volumeHud position in miniplayer
2022-04-07 21:02:22 +02:00
48aa3ba0d8 Merge pull request #655 from Araxeus/add-always-on-top-option
add always-on-top option
2022-04-07 21:01:15 +02:00
f98e4ea749 Merge pull request #670 from Araxeus/fix-precise-volume-not-updating-expand-slider
[precise-volume] fix expand-volume-slider not updating its value
2022-04-07 21:00:19 +02:00
dc500efb79 Merge pull request #671 from Araxeus/lyrics]-fix-part-of-lyrics-is-missing
Fix lyrics genius missing parts
2022-04-07 20:59:30 +02:00
8d9dafb149 Merge pull request #673 from Araxeus/force-show-like-buttons
feat: option to force show like buttons
2022-04-07 20:56:34 +02:00
TC
4ddd2f339b add PiP plugin to readme list 2022-04-07 20:05:13 +02:00
TC
d2265b59d7 Create first version of picture in picture plugin 2022-04-07 20:01:29 +02:00
d47b03c23d use spread syntax instead of Array.from 2022-04-06 20:15:24 +03:00
4c857cb9e9 Merge branch 'lyrics]-fix-part-of-lyrics-is-missing' of https://github.com/Araxeus/youtube-music into lyrics]-fix-part-of-lyrics-is-missing 2022-04-06 20:05:22 +03:00
c31f6cc797 Fix lyrics genius missing parts 2022-04-06 20:04:26 +03:00
0d3fa261a7 feat: option to force show like buttons 2022-04-06 19:48:58 +03:00
b6ee861166 Fix lyrics genius missing parts 2022-04-06 18:57:39 +03:00
f9cf12b7d3 [precise-volume] fix expand-volume-slider not updating its value 2022-04-06 18:26:05 +03:00
bed8d0a7f2 update Electron
+ update electron-unhandled
2022-03-30 18:47:51 +03:00
afac520ff8 fix: upgrade ytpl from 2.2.3 to 2.3.0
Snyk has created this PR to upgrade ytpl from 2.2.3 to 2.3.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-03-26 17:12:51 +00:00
1332c66050 fix: upgrade ytdl-core from 4.10.1 to 4.11.0
Snyk has created this PR to upgrade ytdl-core from 4.10.1 to 4.11.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-03-26 17:12:48 +00:00
7f08579671 add always-on-top option 2022-03-21 18:17:22 +02:00
d5e4f3af46 fix volumeHud position in miniplayer 2022-03-14 22:00:57 +02:00
bdceb4d462 fix: upgrade @electron/remote from 2.0.4 to 2.0.5
Snyk has created this PR to upgrade @electron/remote from 2.0.4 to 2.0.5.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-03-14 18:16:47 +00:00
2758a44965 fix: upgrade @cliqz/adblocker-electron from 1.23.4 to 1.23.5
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.23.4 to 1.23.5.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-02-28 18:26:03 +00:00
704fba9aba fix portable app restart 2022-02-24 20:52:16 +02:00
5cffb6f062 Merge pull request #619 from Araxeus/fix-prompt-options
fix custom titlebar in prompt options
2022-02-24 19:27:56 +01:00
407887254f Merge branch 'master' into migrate-from-remote-to-ipc 2022-02-23 17:34:24 +02:00
47729130c9 fix custom titlebar in prompt options 2022-02-23 17:15:10 +02:00
7088941179 update electron 2022-02-22 18:27:45 +02:00
TC
ff39ddb277 Update changelog 2022-02-20 19:15:07 +01:00
TC
1d9bfe8ac8 Add automatic changelog 2022-02-20 18:50:12 +01:00
TC
edfa9d2ff5 Re-format package.json 2022-02-20 18:46:50 +01:00
1eeaf1dd0a remove @electron/remote 2022-02-20 19:38:42 +02:00
TC
efd2c912a8 Bump version to 1.16.0 2022-02-20 18:37:48 +01:00
9abf7a77d8 Merge branch 'local-upstream/master' into migrate-from-remote-to-ipc 2022-02-20 19:34:18 +02:00
2dd208c21b Merge pull request #596 from Araxeus/update-custom-electron-titlebar
update in-app-menu
2022-02-20 18:31:59 +01:00
c7fe81475f Merge pull request #602 from xn-oah/master
Fix clientID
2022-02-20 18:25:25 +01:00
0acd16fd5d Update yarn.lock 2022-02-15 19:01:23 +02:00
107c79f6a8 Merge branch 'master' of https://github.com/xn-oah/youtube-music 2022-02-13 16:02:53 -06:00
6aa789fb6a fixed clientID 2022-02-13 16:02:50 -06:00
94c86491d0 Merge branch 'th-ch:master' into master 2022-02-13 16:00:29 -06:00
a9f5f376d0 fixed clientID 2022-02-13 15:59:53 -06:00
5bd97685b9 migrate from remote to ipc 2022-02-13 23:45:53 +02:00
TC
ea35da52c3 Refactor Genius logic into separate util 2022-02-13 22:19:16 +01:00
6cad6871bf fix directory path 2022-02-13 22:02:12 +01:00
TC
f865dfd1b6 Fix https://github.com/th-ch/youtube-music/pull/578#issuecomment-1035517531 2022-02-13 19:56:46 +01:00
37e84d3287 Merge pull request #600 from th-ch/snoretoast-custom-compile
Add snoretoast custom compile script
2022-02-13 19:44:27 +01:00
7192b253eb Merge pull request #591 from Araxeus/update-snoretoast
fix interactive notifications icon + exclude platform specific plugins from build
2022-02-13 19:43:46 +01:00
1b99cc6930 use custom snoretoast on release #600 2022-02-13 20:40:09 +02:00
7f0d62383d Merge pull request #587 from xn-oah/master
Add album title to largeImage and change paused icon
2022-02-13 19:07:43 +01:00
TC
44300e757f Add snoretoast custom compile script 2022-02-13 18:14:57 +01:00
dc928542f8 lighten up menuItem background color 2022-02-11 16:29:11 +02:00
1834e1e938 Merge branch 'th-ch:master' into update-snoretoast 2022-02-11 15:54:13 +02:00
8263918033 add toggle fullscreen to view menu
enables f11 shortcut
2022-02-11 15:49:33 +02:00
247777bcc4 remove remote module from prompt-options 2022-02-11 15:24:42 +02:00
023db03278 Merge branch 'master' into update-custom-electron-titlebar 2022-02-10 23:13:55 +02:00
TC
a3f7eebd14 Bump version 2022-02-10 00:37:35 +01:00
5c7d612e97 Merge pull request #595 from Araxeus/useragent-option
make useragent override optional
2022-02-10 00:33:59 +01:00
465e8e1717 Merge branch 'master' into useragent-option 2022-02-10 00:32:52 +01:00
621c5de357 Merge pull request #588 from Araxeus/fix-album-name
get album name from DOM
2022-02-10 00:15:02 +01:00
TC
4d890c4941 Fix warnings in genius plugin 2022-02-10 00:08:40 +01:00
9b7c1a8d37 Merge pull request #584 from Araxeus/fix-lyrics
fix various lyrics issues
2022-02-10 00:07:33 +01:00
05b877b702 Merge pull request #580 from Araxeus/discord-timeout-time-prompt
discord set inactivity timeout prompt
2022-02-09 23:49:31 +01:00
8268b18eee Merge branch 'master' into discord-timeout-time-prompt 2022-02-09 23:47:01 +01:00
ed15ee92df Merge pull request #578 from Araxeus/single-instance-lock-option
add single instance lock option
2022-02-09 23:44:54 +01:00
c2fdfcca58 Merge pull request #561 from Araxeus/fix-restart-on-config-change
fix "restart app on config change" option
2022-02-09 23:40:57 +01:00
ac54d33fa7 Merge pull request #562 from Araxeus/fix-window-position-save-spam
fix window position save spam
2022-02-09 23:37:56 +01:00
38ffc093c3 Merge branch 'master' into update-custom-electron-titlebar 2022-02-07 20:57:15 +02:00
37c0ceaafe Merge branch 'master' into fix-restart-on-config-change 2022-02-07 17:27:27 +02:00
47f71a6022 Merge branch 'master' into discord-timeout-time-prompt 2022-02-07 17:24:44 +02:00
08a39a59d3 Merge branch 'master' into fix-lyrics 2022-02-07 17:14:20 +02:00
e6e83de89d Merge pull request #583 from Araxeus/fix-adblocker-loading-late
load adblocker sooner
2022-02-07 00:49:21 +01:00
1d1a9f5094 Merge pull request #585 from Araxeus/update-readme
add description of new plugins to readme
2022-02-07 00:45:28 +01:00
a5ba0b1a1a Merge pull request #573 from lazerl0rd/patch-1
Use `center` alignment for lyrics text
2022-02-07 00:43:54 +01:00
d785b9b95b Merge pull request #567 from Araxeus/fix-precise-volume-hud-position
fix precise-volume hud positioning
2022-02-07 00:42:33 +01:00
2f5e0c0038 Merge pull request #565 from Araxeus/update-electron
update electron and dependencies
2022-02-07 00:34:43 +01:00
09bd271df2 update in-app-menu 2022-02-06 03:32:15 +02:00
766dd21cb7 make useragent override optional 2022-02-05 18:24:37 +02:00
fef711549f update electron to v17.0.0 2022-02-05 15:20:14 +02:00
ca624f4df8 Merge branch 'master' into update-electron 2022-02-01 22:56:08 +02:00
8be07bcb7a update dependencies 2022-02-01 22:53:10 +02:00
271d5258ca fix interactive notifications icon 2022-02-01 19:47:01 +02:00
721f733dc4 update electron to 16.0.8 2022-01-31 23:50:38 +02:00
9b8d9c4905 get album name from DOM 2022-01-31 01:02:28 +02:00
543db59a55 fix formatting 2022-01-30 13:15:29 -06:00
e9a670831c Add album title to largeImage and change paused icon 2022-01-30 12:48:15 -06:00
24f694737a add new plugins to readme 2022-01-30 19:12:42 +02:00
fc111e2513 keep footer out of contents div 2022-01-29 18:05:55 +02:00
187f6833f4 Merge branch 'fix-lyrics' of https://github.com/Araxeus/youtube-music into fix-lyrics 2022-01-29 17:58:47 +02:00
b042d0a8ca use regex on cleanupName() 2022-01-29 17:57:39 +02:00
eff0995d78 fix showing old lyrics if new lyrics couldn't be resolved 2022-01-29 17:57:14 +02:00
366c90f71d fix showing old lyrics if new lyrics couldn't be resolved 2022-01-29 17:10:47 +02:00
909036108f reenable lyrics footer 2022-01-29 16:56:55 +02:00
41b9ab4815 lint 2022-01-29 16:35:52 +02:00
60bb5b861d change to new lyrics even if lyrics tab was already selected 2022-01-29 11:35:18 +02:00
900c44d9c0 fix disabled lyrics tab 2022-01-29 11:14:03 +02:00
babc50099c fix lyrics css styling 2022-01-29 11:13:53 +02:00
ea191a3005 load adblocker sooner 2022-01-29 09:37:02 +02:00
02081d8272 fix precise-volume hud positioning 2022-01-27 22:41:55 +02:00
03e27519db discord set inactivity timeout prompt 2022-01-27 22:32:45 +02:00
1248f1c8ec add single instance lock option 2022-01-27 10:00:35 +02:00
766bd378fd Use center alignment for lyrics text
This seems to be the case for most music applications [that I've used] and also provides the benefit of "fixing" how lyrics appear in RTL languages (such as Arabic).
2022-01-26 15:58:50 +00:00
61eb23614a Merge pull request #557 from Araxeus/fix-filepath-error
filenamify playlist folder name
2022-01-23 14:48:10 +01:00
3f606695bf Merge pull request #554 from th-ch/snyk-fix-6b7a813ed44a44be91e81ec320a8fde1
[Snyk] Security upgrade node-fetch from 2.6.6 to 2.6.7 (3.1.1 incompatible)
2022-01-23 14:40:53 +01:00
74b67c3d33 fix restart app on config change option 2022-01-23 00:12:20 +02:00
TC
8dd41cca09 Use v2.6.7 of node-fetch 2022-01-22 20:02:06 +01:00
TC
89ea66ba2b Simplify off-screen check 2022-01-22 19:57:23 +01:00
199d8ba4d7 Merge pull request #548 from Araxeus/offscreen-app-fix
fix app starting offscreen
2022-01-22 19:56:12 +01:00
b0f29dde94 Merge pull request #566 from th-ch/release-mac-arm64
Release Mac arm64
2022-01-22 19:54:40 +01:00
TC
90f4c9383f Release Mac arm64 2022-01-22 19:47:10 +01:00
4c8996096a Merge pull request #553 from arunim2405/master
Build command for Apple (m1) silicon macs
2022-01-22 19:45:57 +01:00
315048722f update electron to 16.0.7 2022-01-22 18:07:47 +02:00
9403804128 fix multiple monitor calculations 2022-01-21 21:58:44 +02:00
28b6d99599 lint 2022-01-21 00:05:05 +02:00
92fc8f325a Merge branch 'fix-window-position-save-spam' of https://github.com/Araxeus/youtube-music into fix-window-position-save-spam 2022-01-21 00:02:14 +02:00
a744a2ebde fix window position save spam 2022-01-21 00:01:14 +02:00
c8f62f6d19 fix window position save spam
(and also window position being forgotten on maximizing)
2022-01-20 23:45:57 +02:00
7fd9d5a971 use -8 insteaf of 0
(often maximized app will have -8,-8 coordinates)
2022-01-19 19:40:58 +02:00
cb920194ce filenamify playlist folder name 2022-01-18 18:32:25 +02:00
dc728786ee fix: package.json & yarn.lock to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-NODEFETCH-2342118
2022-01-17 18:10:50 +00:00
8cfc8d1ba1 support build for arm64 macs 2022-01-17 11:58:52 +05:30
68bd691702 check if window.y is offscreen 2022-01-16 20:02:35 +02:00
44aa62c9c8 Merge pull request #545 from th-ch/snyk-upgrade-d09c6b75ea60c0149b8328cb6bad2f0d
[Snyk] Upgrade custom-electron-titlebar from 3.2.9 to 3.2.10
2022-01-16 17:31:38 +01:00
2ad6c0fcdc Merge pull request #551 from Araxeus/fix-linux-duplicate-mediasession
Fix duplicate media session on linux
2022-01-16 17:29:58 +01:00
TC
40fbf3441a Backport missing changes for playlist badge 2022-01-16 17:29:21 +01:00
96f0d30818 Merge pull request #550 from Araxeus/download-playlist-badge-count
show a badge remaining items when downloading a playlist
2022-01-16 17:26:14 +01:00
90d6f13b56 Merge branch 'master' into download-playlist-badge-count 2022-01-16 17:23:43 +01:00
a0f2233db4 Merge pull request #549 from Araxeus/fix-download-button-on-playlist-menu
allow downloading playlists from popup menu
2022-01-16 17:19:51 +01:00
57ace9d504 lint 2022-01-14 00:08:43 +02:00
c2cc3cf7a0 fix duplicate mpris session 2022-01-13 14:46:41 +02:00
17a24cbb04 set badge on downloader playlist 2022-01-12 14:29:56 +02:00
74f61a532d downloader lint&refactor 2022-01-12 09:49:27 +02:00
c7e793b66e fix playback speed slider showing up where it shouldn't 2022-01-11 23:41:17 +02:00
21c149efc7 update ytdl-core 2022-01-11 22:54:53 +02:00
5e68d2487f allow downloading playlists from popup menu 2022-01-11 22:54:53 +02:00
e8bbc5ec1c fix app starting offscreen 2022-01-11 20:14:33 +02:00
97013d8373 fix: upgrade custom-electron-titlebar from 3.2.9 to 3.2.10
Snyk has created this PR to upgrade custom-electron-titlebar from 3.2.9 to 3.2.10.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-01-08 19:06:52 +00:00
ec4c2e92af Merge pull request #539 from markbaas/mpris-artist-fix
xesam:artist should be a list
2022-01-07 22:11:54 +01:00
TC
81dadeddb9 Disable NODE_OPTIONS in entry file 2022-01-07 22:09:26 +01:00
7f3a554bc3 Merge pull request #537 from Araxeus/fix-song-info-bugs
fix notifications showing thumbnail of last song
2022-01-07 22:04:47 +01:00
98f990fcdd dont send callback on playPause() if still handling data from new song
fix notifications showing thumbnail of last song
2022-01-04 19:40:06 +02:00
75999e9dcf xesam:artist should be a list 2022-01-04 15:18:19 +01:00
4d595f56d5 Update readme (Spectron -> Playwright) 2022-01-02 22:31:19 +01:00
TC
f44b6f0c33 Bump version to 1.15.0 2021-12-30 19:39:20 +01:00
TC
c45e4e50fc Bump electron to 16.0.5 2021-12-30 19:39:03 +01:00
TC
9839a973f7 nit: re-format package.json 2021-12-30 19:35:53 +01:00
9ea967f03b Merge pull request #531 from th-ch/fix-tests
Switch from spectron to playwright to fix tests
2021-12-30 19:35:00 +01:00
TC
9d6765125b Switch from spectron to playwright to fix tests 2021-12-30 19:26:01 +01:00
TC
8d66735585 Add presets to FFmpeg in menu 2021-12-30 18:46:43 +01:00
14b4c55ce7 Merge pull request #529 from th-ch/snyk-upgrade-27f67e987dd094f8f1db19ad7f90c292
[Snyk] Upgrade @cliqz/adblocker-electron from 1.23.0 to 1.23.1
2021-12-30 17:59:53 +01:00
1d1f4bbcc3 Merge branch 'master' into snyk-upgrade-27f67e987dd094f8f1db19ad7f90c292 2021-12-30 17:59:34 +01:00
bd520c7eff Merge pull request #525 from Araxeus/fix-precise-volume-options-sync
fix precise-volume options sync
2021-12-30 17:57:13 +01:00
73e201bb2c Merge pull request #524 from MulverineX/patch-1
Add album art/thumbnail to discord activity
2021-12-30 15:10:07 +01:00
81b08917ae Merge pull request #521 from Araxeus/fix-skip-silences
fix skip-silences plugin
2021-12-30 15:08:56 +01:00
81c2ab34d9 Merge pull request #520 from th-ch/snyk-upgrade-7535be87da222abdba60d9fa36da34b5
[Snyk] Upgrade electron-updater from 4.6.2 to 4.6.3
2021-12-30 15:06:06 +01:00
TC
33faa2deb3 nit: improve comment for shared Array Buffer 2021-12-30 14:59:11 +01:00
TC
4d4ac56486 Ensure NODE_OPTIONS are unset in dev mode to avoid warning 2021-12-30 14:58:21 +01:00
56ac2b3b06 Merge pull request #515 from Araxeus/fix-useragents
update electron & remote & user agents
2021-12-30 14:57:36 +01:00
c72ea4bad5 fix: upgrade @cliqz/adblocker-electron from 1.23.0 to 1.23.1
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.23.0 to 1.23.1.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2021-12-27 20:52:46 +00:00
d60069555e Merge pull request #513 from markbaas/master
fixes mpris bug in snap
2021-12-27 16:12:40 +01:00
ed7025b4a2 fix precise-volume options sync 2021-12-24 02:13:21 +02:00
5fbc0f8122 Add album art/thumbnail to discord activity 2021-12-23 11:36:11 -07:00
02a989ca07 fix unnecessary skips 2021-12-18 21:03:32 +02:00
7c6fe6748e fix: upgrade electron-updater from 4.6.2 to 4.6.3
Snyk has created this PR to upgrade electron-updater from 4.6.2 to 4.6.3.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2021-12-18 11:02:24 +00:00
8f2ed3039a add comment to useragent fix 2021-12-16 19:29:09 +02:00
baeebd1959 downloader fixes
* --experimental-wasm-bulk-memory
* SharedArrayBuffer
* getFolder from front
* ytdl-core 4.9.2
2021-12-16 19:15:55 +02:00
49edbf723f fix custom-electron-prompt & remote 2021-12-16 18:28:49 +02:00
3764ce9a7c update custom-electron-titlebar 2021-12-16 18:01:11 +02:00
46943520bd Merge branch 'master' into fix-useragents 2021-12-15 19:32:14 +02:00
1048b3f99a Merge pull request #519 from th-ch/skip-silences-plugin
Add "Skip silences" plugin
2021-12-14 23:31:14 +01:00
TC
b1e40271e6 nit: re-order dependencies 2021-12-14 23:17:06 +01:00
TC
11429978c9 Add plugin to skip silences 2021-12-14 23:16:41 +01:00
47ca6e0b1f use session.webRequest.onBeforeSendHeaders for useragent 2021-12-14 19:22:02 +02:00
a273f6f73c fix video toggle button appearing when in song mode 2021-12-14 00:34:32 +02:00
c8ba85be76 use firefox as falllback useragent 2021-12-14 00:34:10 +02:00
6633243628 use @rozzzly/custom-electron-titlebar 2021-12-13 21:10:59 +02:00
2fb47933ac fix useragents 2021-12-13 21:06:52 +02:00
4fd683ed23 update electron & remote module 2021-12-13 20:10:36 +02:00
e1e9748002 always on useragent 2021-12-13 01:11:13 +02:00
dd122666c5 update useragents 2021-12-13 00:56:13 +02:00
5483f0ee36 Merge pull request #510 from MiepHD/master
Aligned lyric design
2021-12-10 21:15:36 +01:00
2c6c80d829 Merge pull request #509 from Araxeus/mpris-urgent-fix
Fix mpris bugs - follows #480
2021-12-10 21:14:31 +01:00
584d3e83c6 fixes mpris bug in snap 2021-12-10 20:52:16 +01:00
58d5256dd2 1vw would fit perfectly 2021-12-05 17:41:59 +01:00
920d61a1c6 Aligned lyric design
I aligned the lyric to the normal lyrics so that the lyric isn't that tiny
2021-12-04 20:53:19 +01:00
c5c2d5b74c Hide cast button which doesn't work 2021-12-03 16:56:51 +02:00
2daee01ff7 Fix bugs from bad merge conflict solving
-fix missing songControls
-use player.seeked directly
-fix 'seeked' event listener
-fix e.target instead of e.detail in apiLoaded event
-fix document.querySelector('video') before apiLoaded
-setup timeChange Listener if linux+shortcuts enabled
2021-12-03 15:55:40 +02:00
d13c9b7ca6 Merge pull request #476 from Araxeus/mix-fixes
Various small fixes (discord, video-toggle, precise-volume, playback-speed, shortcuts, lyrics)
2021-12-02 21:11:28 +01:00
5296a88525 Merge pull request #480 from Araxeus/mpris+tuna-fix
Mpris + obs-tuna fixes
2021-12-02 21:03:03 +01:00
8ce4b5b297 lint 2021-12-01 21:44:48 +02:00
2c39c0efed Merge branch 'master' into mpris+tuna-fix 2021-12-01 20:11:59 +02:00
e917abaec9 fix merge error 2021-12-01 00:08:55 +02:00
bdd0a2e8db Merge branch 'master' into mix-fixes 2021-12-01 00:06:15 +02:00
362003e10e Merge pull request #498 from th-ch/snyk-upgrade-9d2eea8c019b6593f1ef01f7fe8f404b
[Snyk] Upgrade node-fetch from 2.6.5 to 2.6.6
2021-11-30 00:16:34 +01:00
4e4b557413 Merge pull request #491 from Araxeus/fix-blur
fix interaction between blur navbar & in-app-menu
2021-11-30 00:14:49 +01:00
3a068af925 Merge pull request #475 from th-ch/snyk-upgrade-55c8a0f6d6911f431ebf75ad846e8f6c
[Snyk] Upgrade @cliqz/adblocker-electron from 1.22.7 to 1.23.0
2021-11-30 00:12:21 +01:00
44ca812330 Merge pull request #488 from Rubecks/exponential-volume-plugin
New Plugin: Exponential Volume
2021-11-30 00:10:48 +01:00
74a69e1c7a Merge pull request #474 from th-ch/snyk-upgrade-267eeda31c348d529d38d5a6413ef858
[Snyk] Upgrade electron-updater from 4.6.0 to 4.6.1
2021-11-30 00:06:42 +01:00
c3ef16c3dd Merge pull request #477 from Araxeus/fix-loadeddata/metdata-events-rarely-not-firing
Fix loadeddata/metadata video events rarely not firing (+other small fixes)
2021-11-29 23:52:23 +01:00
8c5ac17cdf fix multiple songInfo calls on start 2021-11-23 18:53:04 +02:00
c99b95e611 use config.plugins.isEnabled 2021-11-22 22:52:38 +02:00
4362101c0a lint 2021-11-22 22:08:24 +02:00
7ba205cc6c fix backquotes in keybind prompt 2021-11-22 18:59:29 +02:00
abc1712cf7 fix counter prompt 2021-11-22 18:33:32 +02:00
92452f804f fix song-info-request 2021-11-22 18:20:12 +02:00
c76df84ce3 fix: upgrade node-fetch from 2.6.5 to 2.6.6
Snyk has created this PR to upgrade node-fetch from 2.6.5 to 2.6.6.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2021-11-22 04:09:33 +00:00
185ebbf417 fix downloader playlist download 2021-11-21 19:44:01 +02:00
6726e2600b rework songInfo pause listener 2021-11-14 23:49:19 +02:00
93e0664f95 fix height & blur of search page item header 2021-11-14 22:02:37 +02:00
bf45ed10aa fix #490 2021-11-14 21:45:34 +02:00
8da78d50c4 Exponential Volume Plugin 2021-11-12 17:58:39 -03:00
b27a959c2b fix video-toggle&precise-volume interaction 2021-11-12 18:42:58 +02:00
cfe719b6bd use native thumbnail without modifiers 2021-11-12 17:46:40 +02:00
071799c435 fix some shortcuts 2021-11-12 16:39:43 +02:00
87ee7ed83d lint video-toggle 2021-11-10 22:35:49 +02:00
08fdd07969 speed up sponsorblock 2021-11-10 20:44:13 +02:00
02d5b78f55 add songInfo.album 2021-11-10 20:11:45 +02:00
5492afe5f6 add catch to fetch 2021-11-10 19:08:19 +02:00
9a7baeac23 fix tuna time update 2021-11-10 18:45:42 +02:00
ccfe7434bf fix mpris 2021-11-10 18:23:55 +02:00
6dbed73e6b fix disable autoplay 2021-11-09 18:52:03 +02:00
895136af0a used youtube's videodatachange event 2021-11-09 17:57:06 +02:00
72b4398024 lint&fix video-toggle plugin 2021-11-09 15:17:26 +02:00
65ce62adc1 use $('video') srcChanged event instead of loadeddata/metadata 2021-11-09 13:29:41 +02:00
eafdd5046d fix lyric text size 2021-11-09 10:42:32 +02:00
bbece751c0 lint playback speed 2021-11-09 10:03:06 +02:00
719c244e32 fix #472 2021-11-09 10:01:33 +02:00
e70b41b256 fix: upgrade @cliqz/adblocker-electron from 1.22.7 to 1.23.0
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.22.7 to 1.23.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2021-11-09 05:45:20 +00:00
f4b6fd53f3 fix: upgrade electron-updater from 4.6.0 to 4.6.1
Snyk has created this PR to upgrade electron-updater from 4.6.0 to 4.6.1.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2021-11-09 05:45:17 +00:00
f40ed04899 Merge pull request #467 from th-ch/snyk-upgrade-cfd310bb818846c87b2239715bd6d1c1
[Snyk] Upgrade custom-electron-prompt from 1.1.0 to 1.2.0
2021-11-07 15:56:27 +01:00
c897323be0 fix: upgrade custom-electron-prompt from 1.1.0 to 1.2.0
Snyk has created this PR to upgrade custom-electron-prompt from 1.1.0 to 1.2.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2021-11-02 06:46:27 +00:00
TC
d7c4716a6e Re-order plugins in readme 2021-11-01 22:49:34 +01:00
TC
461cac741b nit: add new line at end of file 2021-11-01 22:42:28 +01:00
TC
cee2e066b9 Fix apiLoaded event listener in video-toggle plugin 2021-11-01 22:42:03 +01:00
TC
953d6fe3e4 Migrate old "hide-video-player" plugin to new one 2021-11-01 22:40:26 +01:00
c592a26e42 Merge pull request #448 from Araxeus/new-hide-video-player
Video Toggle Plugin
2021-11-01 22:11:38 +01:00
62bacf76d0 change file names to lower case 2021-11-01 23:10:15 +02:00
fc254db010 Merge pull request #462 from Araxeus/fix-playback-speed-plugin
fix playback speed plugin
2021-11-01 22:10:02 +01:00
0287b69424 fix missing thumbnails
+forced push fix woupsie
2021-11-01 23:04:39 +02:00
ceebd99927 Merge pull request #465 from Araxeus/fix-sponsorblock-v2
Fix sponsorblock skipping when not needed
2021-11-01 21:54:05 +01:00
41285ac9fc fix slider not working on tap 2021-11-01 22:23:26 +02:00
7b9415033f use loadedmetadata instead of loadeddata 2021-11-01 20:03:57 +02:00
b1ffd93bc2 lint in-app-menu 2021-11-01 19:57:28 +02:00
64637a6ac5 Reset segments on song end 2021-11-01 19:57:15 +02:00
b83afa22d9 Merge remote-tracking branch 'upstream/master' into fix-playback-speed-plugin 2021-11-01 18:07:54 +02:00
c68daabeab lint audio-compressor plugin 2021-11-01 18:07:21 +02:00
9ec0830a65 Merge remote-tracking branch 'upstream/master' into new-hide-video-player 2021-11-01 17:59:35 +02:00
48943ee74b lint 2021-11-01 16:06:55 +02:00
29d5b3c7db lint 2021-11-01 16:02:27 +02:00
TC
3de574a2e4 Remove debug log from genius plugin + add a dev log 2021-11-01 12:13:22 +01:00
e765d18ab0 Merge pull request #463 from Araxeus/use-apiLoaded-event-for-time-update
Sponsorblock fix + use new apiLoaded event
2021-11-01 12:03:47 +01:00
4629759eec Merge pull request #458 from Araxeus/use-apiReady-on-audio-compressor-plugin
use apiLoaded event in audio-compressor plugin
2021-11-01 11:47:11 +01:00
a14d27da70 Merge pull request #456 from Araxeus/hide-menu-initial-alert
alert on initial hide-menu enabled
2021-11-01 11:44:27 +01:00
5256ffcf77 Merge pull request #451 from Araxeus/fix-blur-plugin
Blur plugin tweaks and integration with in-app-menu
2021-11-01 11:34:54 +01:00
e2bbc6abbc Merge pull request #449 from Araxeus/fix-resume-on-start
set resume on start url to songInfo.url
2021-11-01 11:30:03 +01:00
6243e6fd48 set max playback speed to 16 ;) 2021-10-30 15:56:12 +03:00
1434849142 simplify playback rate steps 2021-10-30 15:40:45 +03:00
9bd089adb0 add check for lowest playback speed (0.07) 2021-10-30 14:57:16 +03:00
6c1a4c0ac2 playbackSpeed wheel listener 2021-10-30 14:49:03 +03:00
d35fef82fe fix sponsoblock spam updating time 2021-10-30 13:30:38 +03:00
bca22d8e24 update electron to v12.2.2 fixes fetch CERT_HAS_EXPIRED error 2021-10-30 13:17:47 +03:00
754eac6ee0 use apiLoaded 'once'
lint
2021-10-30 12:53:14 +03:00
762566cce6 lint 2021-10-30 12:52:04 +03:00
286bc0113e fix sponsorblock plugin 2021-10-30 12:43:51 +03:00
62e8e673eb use apiLoaded 'once' 2021-10-30 12:17:32 +03:00
68996809f0 add apiLoaded event to disable-autoplay plugin 2021-10-30 12:05:03 +03:00
48a2a13163 fix playback speed plugin 2021-10-30 12:00:29 +03:00
6e94422b15 use apiLoaded event in audio-compressor plugin 2021-10-26 20:57:56 +03:00
713e005aa8 Update readme.md 2021-10-26 20:45:43 +03:00
3f3ab766ce Update readme.md 2021-10-26 20:34:44 +03:00
00e1bbf994 Update readme.md 2021-10-26 20:31:27 +03:00
b45adac847 Update readme.md 2021-10-26 20:03:01 +03:00
3d9b495863 Update readme.md 2021-10-26 19:50:15 +03:00
a70364facf lint 2021-10-26 19:23:10 +03:00
02cb39602f alert on initial hide-menu enabled 2021-10-26 19:07:10 +03:00
12c31725fe fixes scrollbar position relative to navbar depending on player-page-open 2021-10-25 22:45:11 +03:00
e0841060df fix comment typo 2021-10-25 20:20:52 +03:00
b7b55b5c83 Add blur to (library)header + make in-app-menu compatible 2021-10-25 00:43:42 +03:00
43a9093eb7 set resume on start url to songInfo.url 2021-10-24 21:17:45 +03:00
67e43bc0e3 Video Toggle Plugin 2021-10-24 20:09:30 +03:00
TC
a47c906ab2 Add audio compressor plugin to readme 2021-10-24 17:55:37 +02:00
TC
41a01ba58a Bump dev deps 2021-10-24 14:32:35 +02:00
TC
ca2bd011e2 Document quality changer plugin in readme 2021-10-24 14:08:47 +02:00
2106914aff Merge pull request #446 from Araxeus/quality-changer-plugin
quality-changer-plugin
2021-10-24 14:06:08 +02:00
1c11ddbb7d Merge branch 'master' into quality-changer-plugin 2021-10-24 14:03:40 +02:00
TC
fc1211f7a1 Bump version to 1.14.0 2021-10-24 14:02:13 +02:00
TC
18f87c7b0d Add migration for precise-volume plugin (globalShortcuts key) 2021-10-24 14:02:01 +02:00
TC
f9a4bffa55 Fix styling of store migrations 2021-10-24 14:01:29 +02:00
TC
02f4aabead Fix condition on query selector 2021-10-24 14:01:00 +02:00
f97dade168 Merge pull request #443 from Araxeus/songInfo-straight-from-youtube-api
get songInfo from youtube API
2021-10-24 13:42:59 +02:00
8c3a6472f8 Merge branch 'master' into songInfo-straight-from-youtube-api 2021-10-24 13:40:48 +02:00
315f9783f5 Merge pull request #442 from cdaydreamer/master
New plugin: Blur navigation bar
2021-10-24 13:34:45 +02:00
ada78837ce Merge branch 'master' into master 2021-10-24 13:34:15 +02:00
58c6a12e53 Merge pull request #440 from cpiber/discord-clean
Discord plugin: Clean Up Export (follow-up #380)
2021-10-24 13:29:34 +02:00
005c930d58 Merge pull request #434 from Araxeus/remove-upgrade-button
remove upgrade button + makes images unselectable
2021-10-24 13:28:43 +02:00
7c2891b732 Merge branch 'master' into remove-upgrade-button 2021-10-24 13:28:15 +02:00
8b36139dab Merge pull request #433 from Araxeus/new-auto-confirm
new auto confirm when paused
2021-10-24 12:44:19 +02:00
a045d65e58 Merge pull request #431 from itzmanish/fix/mpris
fix: mpris instance not registering itself and media controls
2021-10-24 12:42:31 +02:00
7b064c1e6f Merge pull request #288 from thymue/compressor-plugin
Audio compressor plugin
2021-10-24 12:17:28 +02:00
6a2e3ab6c1 Merge pull request #275 from Araxeus/precise-volume-HUD
precise-volume plugin fixes & updates
2021-10-24 11:40:54 +02:00
362da8c308 Merge pull request #243 from Araxeus/custom-electron-prompt
Custom Prompt for changing options
2021-10-24 11:22:20 +02:00
5658765f54 quality-changer-plugin 2021-10-24 02:24:25 +03:00
38449f003a use apiLoad event 2021-10-23 18:28:38 +03:00
df75e480a6 use apiLoad event 2021-10-23 18:27:35 +03:00
79a95f133b use apiLoad event 2021-10-23 18:22:17 +03:00
9b1a5b8d26 clarify var names in cleanupName() 2021-10-23 17:18:58 +03:00
bb2e1bd616 use youtube native api to change volume 2021-10-23 16:57:44 +03:00
2d518abc19 remove leftover console.log 2021-10-23 16:26:45 +03:00
978aca1f9a use loadeddata instead of loadedmetadata
send event closer to actual initial start time of video
2021-10-23 16:21:42 +03:00
2224786478 lint 2021-10-23 16:19:45 +03:00
51364b63e7 get songInfo from youtube API 2021-10-23 16:13:06 +03:00
c897bedd90 New plugin: Blur navigation bar 2021-10-23 15:38:46 +03:00
831b1ea8e1 access window._lact directly 2021-10-23 15:21:49 +03:00
4d4dacbc71 discord: clean up export (follow-up #380) 2021-10-19 18:40:27 +02:00
1cd4f53657 Merge branch 'master' into custom-electron-prompt 2021-10-19 15:55:00 +03:00
2eda0e4948 Merge branch 'master' into new-auto-confirm 2021-10-19 15:19:58 +03:00
f2e04f9170 Merge pull request #412 from th-ch/snyk-upgrade-3ac551b4f96cf4c26f3157f42a916769
[Snyk] Upgrade async-mutex from 0.3.1 to 0.3.2
2021-10-18 23:34:29 +02:00
c92b3915d9 Merge pull request #414 from th-ch/dependabot/npm_and_yarn/tmpl-1.0.5
build(deps): bump tmpl from 1.0.4 to 1.0.5
2021-10-18 23:31:59 +02:00
6118a17b08 Merge pull request #416 from th-ch/snyk-upgrade-d31d43c15fe12eab06e73b6f8faeda29
[Snyk] Upgrade node-fetch from 2.6.1 to 2.6.2
2021-10-18 23:30:04 +02:00
1490c0f179 Merge pull request #429 from th-ch/snyk-upgrade-129504aaea5df4956b1cd910a6775c4a
[Snyk] Upgrade @cliqz/adblocker-electron from 1.22.5 to 1.22.6
2021-10-18 23:23:27 +02:00
fdf203e70a Merge pull request #430 from th-ch/dependabot/npm_and_yarn/electron-12.1.0
build(deps-dev): bump electron from 12.0.8 to 12.1.0
2021-10-18 23:18:29 +02:00
8114a28964 Merge pull request #380 from cpiber/discord
Fix discord clearActivity, menu, listen along option
2021-10-18 23:10:24 +02:00
663507b3f8 fix: player status when play at start 2021-10-17 11:06:26 +05:30
79d0c7b666 fix: typo 2021-10-17 10:54:05 +05:30
ce4580605d remove upgrade button + makes img unselectable 2021-10-15 15:40:34 +03:00
dda18a72af new auto confirm when paused 2021-10-15 14:38:09 +03:00
f7a1de05c8 defensive coding 2021-10-15 05:41:47 +03:00
361606427a fix: remove unused play pause functions 2021-10-14 10:18:05 +05:30
81fb5118aa fix: don't create play pause method unneccessarily 2021-10-14 10:16:36 +05:30
a76f12c01c feat: add play and pause seperate song controller. 2021-10-13 12:27:13 +05:30
88ee0fb989 fix: mpris was not registering itself before.
Sorry I missed that somehow, because playerctl controls were working.
That was because of chromium was also registering itself for mpris.
2021-10-13 12:26:38 +05:30
3ec49bca74 build(deps-dev): bump electron from 12.0.8 to 12.1.0
Bumps [electron](https://github.com/electron/electron) from 12.0.8 to 12.1.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v12.0.8...v12.1.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-12 22:10:41 +00:00
1908921ae6 fix: upgrade @cliqz/adblocker-electron from 1.22.5 to 1.22.6
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.22.5 to 1.22.6.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2021-10-11 21:23:58 +00:00
b9dbd8bd4d Allow disable listen along (#426) 2021-10-11 15:02:24 +02:00
587818b91e Add type, clear on close 2021-10-05 10:10:36 +02:00
157ae05f80 fix: upgrade node-fetch from 2.6.1 to 2.6.2
Snyk has created this PR to upgrade node-fetch from 2.6.1 to 2.6.2.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=referral&page=upgrade-pr
2021-09-27 19:13:33 +00:00
f2039e29e7 build(deps): bump tmpl from 1.0.4 to 1.0.5
Bumps [tmpl](https://github.com/daaku/nodejs-tmpl) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/daaku/nodejs-tmpl/releases)
- [Commits](https://github.com/daaku/nodejs-tmpl/commits/v1.0.5)

---
updated-dependencies:
- dependency-name: tmpl
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 21:12:33 +00:00
ea2d33c3cf fix: upgrade async-mutex from 0.3.1 to 0.3.2
Snyk has created this PR to upgrade async-mutex from 0.3.1 to 0.3.2.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-09-21 03:24:11 +00:00
d775e3d588 Merge pull request #406 from th-ch/snyk-upgrade-3c48abddd3d31d59f08172a32b5dd378
[Snyk] Upgrade @cliqz/adblocker-electron from 1.22.4 to 1.22.5
2021-09-19 16:13:09 +02:00
e7ec15e90f fix: upgrade @cliqz/adblocker-electron from 1.22.4 to 1.22.5
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.22.4 to 1.22.5.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-09-16 00:27:20 +00:00
TC
403470be69 Bump version 2021-09-15 22:59:06 +02:00
6dc0ba74c4 Merge pull request #384 from konhi/useragent
Fix incorrect Google alert caused by changing user agent coresponding to current platform
2021-09-15 22:54:10 +02:00
TC
6dcfb336c2 Fix missing import in shortcuts plugin 2021-09-15 22:51:58 +02:00
84516b2ac1 Merge pull request #401 from th-ch/snyk-upgrade-4b273faf3969a8ede6309124c5ce3e75
[Snyk] Upgrade electron-updater from 4.4.3 to 4.4.6
2021-09-15 22:50:15 +02:00
57cf2a8cdd fix: upgrade electron-updater from 4.4.3 to 4.4.6
Snyk has created this PR to upgrade electron-updater from 4.4.3 to 4.4.6.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-09-13 01:17:33 +00:00
e3ae97fec4 Merge pull request #370 from th-ch/snyk-upgrade-eeb9d7e7304322861f42850feedf7f74
[Snyk] Upgrade electron-updater from 4.4.0 to 4.4.1
2021-09-12 23:10:47 +02:00
TC
ee76e2cb45 Merge branch 'master' of github.com:th-ch/youtube-music into snyk-upgrade-eeb9d7e7304322861f42850feedf7f74
* 'master' of github.com:th-ch/youtube-music:
  Bump node to v14
  nit: fix code style for tuna obs (+ typo)
  add tuna plugin for obs
  Add mpris support
  Update menu buttons to new format
  Bump jszip from 3.5.0 to 3.7.1
  Add Genius lyrics plugin
  Apply clean up util to title + enrich prefixes
  Bump node to v14
  fix: upgrade @cliqz/adblocker-electron from 1.22.2 to 1.22.3
  Add "Listen Along" button
  sort alphabetically
  suggestions from @Araxeus and @cpiber
  Fix broken link
  update descriptions and add images
  List missing plugins
  Bump path-parse from 1.0.6 to 1.0.7
2021-09-12 23:03:23 +02:00
de01bb6e75 Merge pull request #375 from th-ch/dependabot/npm_and_yarn/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7
2021-09-12 23:02:52 +02:00
TC
42668c3e99 Merge branch 'master' of github.com:th-ch/youtube-music into dependabot/npm_and_yarn/path-parse-1.0.7
* 'master' of github.com:th-ch/youtube-music:
  Bump node to v14
  nit: fix code style for tuna obs (+ typo)
  add tuna plugin for obs
  Add mpris support
  Update menu buttons to new format
  Bump jszip from 3.5.0 to 3.7.1
  Add Genius lyrics plugin
  Apply clean up util to title + enrich prefixes
  Bump node to v14
  fix: upgrade @cliqz/adblocker-electron from 1.22.2 to 1.22.3
  Add "Listen Along" button
  sort alphabetically
  suggestions from @Araxeus and @cpiber
  Fix broken link
  update descriptions and add images
  List missing plugins
2021-09-12 22:55:08 +02:00
05f3c56e47 Merge pull request #385 from th-ch/snyk-upgrade-f132bed3bdbd1c212a2d1580af9a445a
[Snyk] Upgrade @cliqz/adblocker-electron from 1.22.2 to 1.22.3
2021-09-12 22:53:39 +02:00
TC
d54977b9ee Bump node to v14 2021-09-12 22:42:31 +02:00
b89fb4dc2f Merge pull request #388 from th-ch/dependabot/npm_and_yarn/jszip-3.7.1
Bump jszip from 3.5.0 to 3.7.1
2021-09-12 22:33:50 +02:00
a0cf77edfb Merge pull request #382 from konhi/patch-1
List missing plugins
2021-09-12 22:20:53 +02:00
TC
069f9855d1 nit: fix code style for tuna obs (+ typo) 2021-09-12 22:17:54 +02:00
e3e0775401 Merge pull request #397 from mesmerx/master
add tuna plugin for obs
2021-09-12 22:16:22 +02:00
d255e5ffe1 Merge pull request #389 from th-ch/fix-menu-buttons
Update menu buttons to new format
2021-09-12 22:13:46 +02:00
fea460a374 Merge pull request #387 from th-ch/lyrics-genius-plugin
Plugin to fetch lyrics from Genius
2021-09-12 22:10:43 +02:00
302d3f693f add tuna plugin for obs 2021-09-08 22:45:49 -03:00
9cc320d74b Merge pull request #395 from itzmanish/feat/mpris-support
Add mpris support with cherry picked commit from previous PR https://github.com/th-ch/youtube-music/pull/394
2021-09-07 00:12:34 +02:00
e255777283 Add mpris support 2021-09-02 16:00:42 +05:30
ef66612cc8 Discord show error dialog on reconnect error 2021-08-27 17:07:23 +02:00
4bed835347 Merge branch 'master' of https://github.com/th-ch/youtube-music into discord 2021-08-27 16:37:50 +02:00
b5fd6b4969 Discord add reconnecting functionality
Clear rpc on disconnect
Add menu button to reconnect
2021-08-27 16:32:55 +02:00
fe0f213919 Merge pull request #383 from konhi/discord
Add "Listen Along" button, solve #353
2021-08-23 01:19:00 +02:00
TC
e888b5c896 Update menu buttons to new format 2021-08-23 01:17:29 +02:00
f27ff52689 Bump jszip from 3.5.0 to 3.7.1
Bumps [jszip](https://github.com/Stuk/jszip) from 3.5.0 to 3.7.1.
- [Release notes](https://github.com/Stuk/jszip/releases)
- [Changelog](https://github.com/Stuk/jszip/blob/master/CHANGES.md)
- [Commits](https://github.com/Stuk/jszip/compare/v3.5.0...v3.7.1)

---
updated-dependencies:
- dependency-name: jszip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-22 23:16:24 +00:00
TC
acbe0ac25d Add Genius lyrics plugin 2021-08-23 01:12:53 +02:00
TC
c66ff2bf05 Apply clean up util to title + enrich prefixes 2021-08-23 01:12:53 +02:00
d089487aa8 Merge pull request #386 from th-ch/bump-node-version
Bump node to v14
2021-08-23 01:12:27 +02:00
TC
6bc1d1606f Bump node to v14 2021-08-23 01:05:45 +02:00
9df5d921c7 Chrome -> Firefox, simplified using electron-is
suggestions by @Araxeus
2021-08-20 12:33:46 +02:00
4b1dfa1173 fix: upgrade @cliqz/adblocker-electron from 1.22.2 to 1.22.3
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.22.2 to 1.22.3.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-08-19 21:20:28 +00:00
f98318e737 Add platform-based user-agent 2021-08-19 16:49:34 +02:00
7fa1278b31 Add "Listen Along" button 2021-08-19 16:16:49 +02:00
878ec1f6c1 sort alphabetically 2021-08-19 15:09:31 +02:00
086048780a suggestions from @Araxeus and @cpiber 2021-08-19 15:04:47 +02:00
65eaaecae5 Merge branch 'master' into custom-electron-prompt 2021-08-19 13:44:42 +03:00
aff0415816 Fix broken link
Oops.
2021-08-19 00:15:25 +02:00
6040fe1cbd update descriptions and add images 2021-08-19 00:08:17 +02:00
36bc9c62b0 Discord timeout 0 clear activity directly 2021-08-18 21:39:40 +02:00
3901457218 Discord add menu button for clearing activity 2021-08-17 10:09:47 +02:00
52f4e9d796 List missing plugins 2021-08-16 18:49:15 +02:00
183bad43f6 Fix discord clearActivity, menu
The callback sends multiple events, in particular two pause when going to the
next song, so the timeout wasn't properly cleared.
Add menu buttons for the two options
2021-08-15 12:25:00 +02:00
09fe80cae7 Bump path-parse from 1.0.6 to 1.0.7
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-12 03:24:48 +00:00
817b48dc9d fix: upgrade electron-updater from 4.4.0 to 4.4.1
Snyk has created this PR to upgrade electron-updater from 4.4.0 to 4.4.1.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-08-06 21:42:35 +00:00
c6f8c42c45 Merge pull request #350 from th-ch/snyk-upgrade-4809caaf0847354b9b537aa0f8a0999d
[Snyk] Upgrade electron-updater from 4.3.9 to 4.3.10
2021-08-06 23:23:12 +02:00
TC
0535686129 Merge branch 'master' of github.com:th-ch/youtube-music into snyk-upgrade-4809caaf0847354b9b537aa0f8a0999d
# By TC (1) and snyk-bot (1)
# Via GitHub (1) and TC (1)
* 'master' of github.com:th-ch/youtube-music:
  Bump ytdl/ytpl
  fix: upgrade chokidar from 3.5.1 to 3.5.2
2021-08-06 23:22:44 +02:00
53a77255ca Merge pull request #354 from th-ch/snyk-upgrade-1a48119c8989bb533950b3384b3bce29
[Snyk] Upgrade chokidar from 3.5.1 to 3.5.2
2021-08-06 23:17:51 +02:00
TC
c01506dc44 Bump ytdl/ytpl 2021-08-06 23:12:29 +02:00
a49817fdc3 Merge branch 'master' into custom-electron-prompt 2021-07-20 11:06:08 +03:00
52a4608d76 create options.global if needed 2021-07-20 10:57:32 +03:00
6f5f9386ff fix: upgrade chokidar from 3.5.1 to 3.5.2
Snyk has created this PR to upgrade chokidar from 3.5.1 to 3.5.2.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-07-07 05:50:15 +00:00
fddd0607e6 fix: upgrade electron-updater from 4.3.9 to 4.3.10
Snyk has created this PR to upgrade electron-updater from 4.3.9 to 4.3.10.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-07-02 06:17:28 +00:00
TC
2cb6f56feb Bump version 2021-07-01 22:43:35 +02:00
TC
46285a5ed0 Bump glob-parent and add lint script (xo) 2021-06-27 21:19:33 +02:00
TC
496836b33b Bump dependencies to fix vulnerabilities 2021-06-27 21:12:28 +02:00
af127879a5 Merge pull request #339 from th-ch/fix-downloader-plugin
Fix downloader plugin
2021-06-27 21:10:35 +02:00
TC
38ef452801 Bump ffmpeg version 2021-06-27 20:46:48 +02:00
TC
a9a5d99676 Do not add network filters in adblocker cache to fix session enhancing 2021-06-27 20:46:48 +02:00
TC
e5ab50cebd Override content security policy to allow FFmpeg worker 2021-06-27 20:46:46 +02:00
TC
49194f8141 nit: re-order dependencies 2021-06-27 20:39:05 +02:00
TC
641ae27efd Update ytdl-core and ytpl 2021-06-27 20:38:08 +02:00
47a5dec465 Merge pull request #337 from th-ch/snyk-upgrade-fe663d0d7c5fc658f327e05ae5966f76
[Snyk] Upgrade @cliqz/adblocker-electron from 1.22.0 to 1.22.1
2021-06-25 23:11:25 +02:00
c93eabb400 Merge pull request #249 from Araxeus/update-in-app-menu
Update and simplify in-app-menu
2021-06-25 23:03:05 +02:00
664be51de2 Merge branch 'master' into custom-electron-prompt 2021-06-25 12:21:40 +03:00
492a47321d Merge branch 'master' into update-in-app-menu 2021-06-25 12:19:39 +03:00
c89f6af8c6 fix: upgrade @cliqz/adblocker-electron from 1.22.0 to 1.22.1
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.22.0 to 1.22.1.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-06-25 04:53:24 +00:00
9687c6c8e4 Merge pull request #331 from th-ch/dependabot/npm_and_yarn/hosted-git-info-2.8.9
Bump hosted-git-info from 2.8.8 to 2.8.9
2021-06-24 22:06:27 +02:00
ef0a89126a Merge pull request #330 from th-ch/dependabot/npm_and_yarn/lodash-4.17.21
Bump lodash from 4.17.20 to 4.17.21
2021-06-24 22:05:46 +02:00
8ce71d628d Bump lodash from 4.17.20 to 4.17.21
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-24 20:04:35 +00:00
ca95d105c8 Merge pull request #328 from th-ch/snyk-upgrade-dacfb8f0b574367961e405e4912a4659
[Snyk] Upgrade ytdl-core from 4.8.0 to 4.8.2
2021-06-24 22:04:32 +02:00
12568c2b09 Merge pull request #324 from th-ch/snyk-upgrade-f650e2139b30a36951a4a00ed1b78d70
[Snyk] Upgrade electron-updater from 4.3.8 to 4.3.9
2021-06-24 22:03:15 +02:00
82abb4d4d3 Merge pull request #323 from th-ch/dependabot/npm_and_yarn/normalize-url-4.5.1
Bump normalize-url from 4.5.0 to 4.5.1
2021-06-24 22:02:52 +02:00
3c0a5dbbe5 Merge pull request #320 from th-ch/dependabot/npm_and_yarn/trim-newlines-3.0.1
Bump trim-newlines from 3.0.0 to 3.0.1
2021-06-24 22:02:33 +02:00
0b98eef06f Merge pull request #317 from th-ch/snyk-upgrade-a785f5d95c7765e2d47737e150a2263d
[Snyk] Upgrade @ffmpeg/core from 0.9.0 to 0.10.0
2021-06-24 22:02:05 +02:00
TC
18e69c9f2a Merge branch 'master' of github.com:th-ch/youtube-music into snyk-upgrade-a785f5d95c7765e2d47737e150a2263d
# By Araxeus (2) and snyk-bot (2)
# Via GitHub (3) and Araxeus (1)
* 'master' of github.com:th-ch/youtube-music:
  check if native image is empty before writing id tag
  fix unsupported hidden webp coverart
  fix: upgrade @ffmpeg/ffmpeg from 0.9.8 to 0.10.0
  fix: upgrade custom-electron-titlebar from 3.2.6 to 3.2.7
2021-06-24 22:01:16 +02:00
8f5d06d420 Merge pull request #316 from th-ch/snyk-upgrade-6e93904bf885d198521c6a5d8110bde3
[Snyk] Upgrade @ffmpeg/ffmpeg from 0.9.8 to 0.10.0
2021-06-24 22:00:07 +02:00
8a299461a0 Merge pull request #311 from th-ch/snyk-upgrade-44a5db26689d4091f6a2c3c3c69b869a
[Snyk] Upgrade custom-electron-titlebar from 3.2.6 to 3.2.7
2021-06-24 21:49:53 +02:00
0c58bec921 Bump hosted-git-info from 2.8.8 to 2.8.9
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

---
updated-dependencies:
- dependency-name: hosted-git-info
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-19 20:29:37 +00:00
e0cb132686 Merge pull request #318 from Araxeus/fix-hidden-webp-cover-art
fix hidden webp thumbnail throwing MIME type error in downloader
2021-06-19 22:28:59 +02:00
2a192f39f9 fix: upgrade ytdl-core from 4.8.0 to 4.8.2
Snyk has created this PR to upgrade ytdl-core from 4.8.0 to 4.8.2.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-06-19 05:30:04 +00:00
b7ebb7d499 fix: upgrade electron-updater from 4.3.8 to 4.3.9
Snyk has created this PR to upgrade electron-updater from 4.3.8 to 4.3.9.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-06-12 04:23:30 +00:00
fffeac21b7 Bump normalize-url from 4.5.0 to 4.5.1
Bumps [normalize-url](https://github.com/sindresorhus/normalize-url) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/sindresorhus/normalize-url/releases)
- [Commits](https://github.com/sindresorhus/normalize-url/commits)

---
updated-dependencies:
- dependency-name: normalize-url
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-11 04:46:20 +00:00
4387cb485d Bump trim-newlines from 3.0.0 to 3.0.1
Bumps [trim-newlines](https://github.com/sindresorhus/trim-newlines) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/sindresorhus/trim-newlines/releases)
- [Commits](https://github.com/sindresorhus/trim-newlines/commits)

---
updated-dependencies:
- dependency-name: trim-newlines
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-09 18:57:55 +00:00
2a58dc823a check if native image is empty before writing id tag 2021-06-09 20:05:14 +03:00
8eb38271ff fix unsupported hidden webp coverart 2021-06-09 19:53:04 +03:00
1987ad1d4f fix: upgrade @ffmpeg/core from 0.9.0 to 0.10.0
Snyk has created this PR to upgrade @ffmpeg/core from 0.9.0 to 0.10.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-06-08 04:08:44 +00:00
cc4dae60ef fix: upgrade @ffmpeg/ffmpeg from 0.9.8 to 0.10.0
Snyk has created this PR to upgrade @ffmpeg/ffmpeg from 0.9.8 to 0.10.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-06-08 04:08:41 +00:00
1943116aa1 fix: upgrade custom-electron-titlebar from 3.2.6 to 3.2.7
Snyk has created this PR to upgrade custom-electron-titlebar from 3.2.6 to 3.2.7.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-06-05 03:53:12 +00:00
3485d26b11 Merge pull request #308 from th-ch/sponsorblock-plugin
Add Sponsorblock plugin
2021-06-04 22:25:26 +02:00
TC
4a60aa9f20 Keep segments when skipping 2021-06-03 22:15:36 +02:00
TC
cda07c9675 Update adblocking 2021-06-03 22:04:49 +02:00
TC
ca64a77ed0 Add SponsorBlock plugin 2021-06-03 21:47:26 +02:00
TC
30e94d1d6f Refactor videoElement getter into a provider with callback 2021-06-03 21:45:28 +02:00
TC
b8c6ebfa53 Set test environment per test file 2021-06-03 21:43:07 +02:00
b26748ded8 Merge pull request #305 from th-ch/snyk-upgrade-15656c519a90f5bc0f5c8742a9fb04e9
[Snyk] Upgrade @ffmpeg/ffmpeg from 0.9.7 to 0.9.8
2021-05-31 22:06:17 +02:00
f186da0834 fix: upgrade @ffmpeg/ffmpeg from 0.9.7 to 0.9.8
Snyk has created this PR to upgrade @ffmpeg/ffmpeg from 0.9.7 to 0.9.8.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-05-29 04:38:22 +00:00
c52c2d886a Merge pull request #303 from th-ch/dependabot/npm_and_yarn/ws-7.4.6
Bump ws from 7.4.3 to 7.4.6
2021-05-28 23:40:55 +02:00
e5dc1f8a58 Bump ws from 7.4.3 to 7.4.6
Bumps [ws](https://github.com/websockets/ws) from 7.4.3 to 7.4.6.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.4.3...7.4.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-28 21:39:25 +00:00
6dbf4134de Merge pull request #301 from th-ch/dependabot/npm_and_yarn/browserslist-4.16.6
Bump browserslist from 4.16.3 to 4.16.6
2021-05-28 23:38:48 +02:00
e1cc49a74d Merge pull request #300 from th-ch/snyk-upgrade-ce2777733d9dee231391c0a822c24a84
[Snyk] Upgrade @cliqz/adblocker-electron from 1.20.4 to 1.20.5
2021-05-28 23:35:11 +02:00
TC
4489a400b7 Merge branch 'master' of github.com:th-ch/youtube-music into snyk-upgrade-ce2777733d9dee231391c0a822c24a84
# By Araxeus (5) and others
# Via GitHub (5) and TC (2)
* 'master' of github.com:th-ch/youtube-music:
  Bump electron to 12.0.8
  fix: upgrade ytdl-core from 4.5.0 to 4.7.0
  fix: upgrade @ffmpeg/core from 0.8.5 to 0.9.0
  fix notificationOnUnpause option
  fix: upgrade filenamify from 4.2.0 to 4.3.0
  switch to `registerCallback()` on song info
  fix: upgrade ytpl from 2.1.1 to 2.2.0
  lint
  refactor notifications plugin
  setup SongInfo **once**
2021-05-28 23:33:20 +02:00
28aa1c0b22 Merge pull request #299 from th-ch/snyk-upgrade-37e43892f5a34f935e8486a98b3598fb
[Snyk] Upgrade ytdl-core from 4.5.0 to 4.7.0
2021-05-28 23:32:29 +02:00
TC
c540788d20 Merge branch 'master' of github.com:th-ch/youtube-music into snyk-upgrade-37e43892f5a34f935e8486a98b3598fb
# By Araxeus (5) and others
# Via GitHub (4) and TC (1)
* 'master' of github.com:th-ch/youtube-music:
  Bump electron to 12.0.8
  fix: upgrade @ffmpeg/core from 0.8.5 to 0.9.0
  fix notificationOnUnpause option
  fix: upgrade filenamify from 4.2.0 to 4.3.0
  switch to `registerCallback()` on song info
  fix: upgrade ytpl from 2.1.1 to 2.2.0
  lint
  refactor notifications plugin
  setup SongInfo **once**
2021-05-28 23:32:05 +02:00
4ab07dc875 Merge pull request #298 from th-ch/snyk-upgrade-d305cdce94133f6db9615e7b16007c87
[Snyk] Upgrade @ffmpeg/core from 0.8.5 to 0.9.0
2021-05-28 23:28:26 +02:00
5033de13ef Merge pull request #293 from th-ch/snyk-upgrade-335ec370c7caa5a759c54a46b2e27cf5
[Snyk] Upgrade filenamify from 4.2.0 to 4.3.0
2021-05-28 23:23:49 +02:00
55a8787a16 Merge pull request #285 from th-ch/snyk-upgrade-7b9c569f5bdd092f76adf7d412b0eea1
[Snyk] Upgrade ytpl from 2.1.1 to 2.2.0
2021-05-28 23:21:51 +02:00
3515bf364d Merge pull request #269 from Araxeus/fix-XHR-duplicate-callback
fix song-info callback duplication
2021-05-28 23:18:10 +02:00
TC
d8f3246e46 Bump electron to 12.0.8 2021-05-28 23:13:07 +02:00
cd613aaba2 Bump browserslist from 4.16.3 to 4.16.6
Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.16.3 to 4.16.6.
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.16.3...4.16.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-27 02:56:37 +00:00
c5f84b568b fix: upgrade @cliqz/adblocker-electron from 1.20.4 to 1.20.5
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.20.4 to 1.20.5.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-05-26 04:36:08 +00:00
14dc78984f fix: upgrade ytdl-core from 4.5.0 to 4.7.0
Snyk has created this PR to upgrade ytdl-core from 4.5.0 to 4.7.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-05-26 04:36:06 +00:00
fb61dbfa6c fix: upgrade @ffmpeg/core from 0.8.5 to 0.9.0
Snyk has created this PR to upgrade @ffmpeg/core from 0.8.5 to 0.9.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-05-26 04:36:03 +00:00
33855f17dd update refreshMenu() function 2021-05-23 17:57:54 +03:00
8124623142 fix notificationOnUnpause option 2021-05-22 18:38:36 +03:00
e99c91ce6e get rid of (hopefully) unnecessary watchDOMElement 2021-05-19 21:50:40 +02:00
177ce5721f fix: upgrade filenamify from 4.2.0 to 4.3.0
Snyk has created this PR to upgrade filenamify from 4.2.0 to 4.3.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-05-19 05:31:34 +00:00
4fb0b1dd08 switch to registerCallback() on song info 2021-05-19 00:22:12 +03:00
177ad2ce7c minify firstRun() 2021-05-18 19:20:09 +03:00
9b88769585 remove leftover console.log 2021-05-18 19:02:56 +03:00
fd044072a1 use front load event instead of webcontents.did-finish-load 2021-05-18 18:53:00 +03:00
bae5155e19 use let and const instead of var 2021-05-17 13:42:27 +02:00
1e2085b990 compressor plugin 2021-05-17 12:33:43 +02:00
bbe5a7d50b fix: upgrade ytpl from 2.1.1 to 2.2.0
Snyk has created this PR to upgrade ytpl from 2.1.1 to 2.2.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-05-17 04:44:57 +00:00
e5473cdfe4 lint 2021-05-17 00:07:28 +03:00
9c7a70e056 use .toFixed(2) on volume decimals 2021-05-16 23:50:59 +03:00
5bc8e86353 Merge pull request #270 from Araxeus/fix-normal-notification-showing-appID
fix notification showing appID instead of app name on windows
2021-05-16 22:46:54 +02:00
5b00465558 Merge pull request #273 from th-ch/upgrade-electron
Upgrade electron to v12
2021-05-16 22:31:07 +02:00
28b70f6459 added timeout when writing volume to config 2021-05-16 22:59:05 +03:00
6961cdee95 override youtube automatically changing the volume 2021-05-16 22:39:38 +03:00
58557505ae show mute icon when volume=0 2021-05-16 22:39:11 +03:00
65178b259f fix video muting when volume < 3 2021-05-16 21:32:40 +03:00
541c7f34b7 restore menuItems roles that were fixed 2021-05-15 17:24:01 +03:00
b2c209837c fix empty string input validation in setProxy 2021-05-14 03:12:27 +03:00
355f61188a use placeholder proxy example 2021-05-13 07:08:17 +03:00
ea672c2423 show volume hud in videoplayer if available 2021-05-13 03:18:24 +03:00
71ba6b8e55 lint 2021-05-12 20:58:43 +03:00
8a07fccf8f setup on page reload 2021-05-12 18:58:29 +03:00
7bc35f4cee add volume hud 2021-05-12 18:31:11 +03:00
002081bcb9 use store migration 2021-05-12 00:47:41 +03:00
TC
0e8e78362b Upgrade electron to v12 2021-05-11 22:56:07 +02:00
cb6a5a478e lint 2021-05-11 16:47:51 +03:00
d615030222 register appID on windows reguardless of shortcut 2021-05-11 00:34:40 +03:00
e43c01da64 lint 2021-05-11 00:20:00 +03:00
cb5ef1d6e5 check that app is installed / unpacked 2021-05-11 00:15:54 +03:00
78a7dcb7e8 lint 2021-05-10 23:46:56 +03:00
8cca9f3eeb create shortcut only if needed 2021-05-10 23:23:17 +03:00
93d4d3c976 writeShortcut on windows 2021-05-10 22:13:45 +03:00
8284b56075 set appID on windows 2021-05-10 20:40:25 +03:00
580caeffb9 destructure keybind output 2021-05-10 16:53:57 +03:00
b266037bb4 lint 2021-05-10 06:05:39 +03:00
cb743de7fd refactor notifications plugin 2021-05-10 05:00:58 +03:00
7cf78c6635 setup SongInfo **once** 2021-05-10 04:15:56 +03:00
0eca30367f lint 2021-05-10 01:56:41 +03:00
36317c953a globalize promptOptions 2021-05-10 01:43:50 +03:00
f910593fb6 use spread operator + async await 2021-05-10 00:40:02 +03:00
7942efa202 Merge pull request #267 from Araxeus/last-fm-config-check-fix
fix last-fm overwrite config on each start
2021-05-09 21:47:07 +02:00
792c2931b0 fix config overwrite on each start 2021-05-09 22:10:20 +03:00
TC
a3778af48a Downloader: rename UrlToJPG to urlToJPG 2021-05-08 22:48:18 +02:00
TC
163dc7e1d1 Downloader: catch error when fetching playlist 2021-05-08 22:41:56 +02:00
0a59122ac2 Merge pull request #265 from Araxeus/ensure-download-from-radio-button
Downloader tweaks + taskbar progress bar
2021-05-08 22:40:24 +02:00
d2a5110f3b querySelector optimization #2 2021-05-08 23:06:18 +03:00
cf4bbf94e4 update radioButton querySelector 2021-05-08 23:02:52 +03:00
d7e42471a4 lint 2021-05-08 23:01:57 +03:00
d634c41e75 Merge pull request #262 from Araxeus/remove-open-dependency
remove `open` dependency from last-fm plugin
2021-05-08 21:58:51 +02:00
6b88397f82 lint 2021-05-08 21:21:07 +03:00
da3c709ff0 remove videoDetails?.media query from XHR
(it never exists in the XHR responce)
2021-05-08 20:46:15 +03:00
ccd320d8ff minimize getArtist() 2021-05-08 20:40:44 +03:00
3831e61d10 differentiate names of different metadata sources 2021-05-08 19:45:33 +03:00
e46e7b74e2 fix sendError() 2021-05-08 19:34:57 +03:00
b3da77a6bc small refactor 2021-05-08 19:24:25 +03:00
96a74f8955 use original metadata only if not already captured from ytpl.getInfo() 2021-05-08 19:19:11 +03:00
3ea17e6f46 refactor 2021-05-08 08:05:38 +03:00
a8ac2c3af9 download progress bar on taskbar
+ Get the best possible artwork
2021-05-08 07:11:54 +03:00
2168cbca30 use image from imageSrc if transfered 2021-05-08 04:04:35 +03:00
cceb45319a debug videoUrl from start Radio button in menu 2021-05-08 04:03:34 +03:00
e985b78241 lint 2021-05-08 01:08:24 +03:00
090ca828c0 Merge branch 'master' into update-in-app-menu 2021-05-08 01:03:14 +03:00
3522925dec remove open dependency 2021-05-08 01:00:23 +03:00
5418ef7ae2 Merge branch 'master' into custom-electron-prompt 2021-05-08 00:21:16 +03:00
5faeddb99b Merge pull request #252 from Araxeus/fix-download-idtag-if-not-playing
Fix downloader metadata if not currently playing
2021-05-07 23:11:10 +02:00
1140c3e2e7 lint 2021-05-07 23:40:14 +03:00
TC
3fb08d27c7 Add start:debug command to enable dev with electron debug 2021-05-07 22:29:21 +02:00
250940d083 Merge pull request #259 from Araxeus/force-pause
fix playPause bugs by directly playPause video element
2021-05-07 22:24:03 +02:00
e00be8f010 lint 2021-05-07 05:43:26 +03:00
8b471c0772 create cleanupArtistName() in song-info 2021-05-07 04:47:24 +03:00
88e738c796 check if yns_pause exists 2021-05-07 04:17:17 +03:00
TC
c76d8c79d8 Bump version to 1.12.1 2021-05-06 22:29:04 +02:00
b396431a8b Merge pull request #260 from th-ch/dependabot/npm_and_yarn/ua-parser-js-0.7.28
Bump ua-parser-js from 0.7.23 to 0.7.28
2021-05-06 22:18:37 +02:00
d1795a82f7 Merge pull request #253 from Araxeus/fix-precise-volume-listener-override
Fix precise volume listener override
2021-05-06 21:45:09 +02:00
9b821a0dfe Bump ua-parser-js from 0.7.23 to 0.7.28
Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.23 to 0.7.28.
- [Release notes](https://github.com/faisalman/ua-parser-js/releases)
- [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.23...0.7.28)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-06 19:41:13 +00:00
bf89842ee8 Merge pull request #255 from Araxeus/fix-css-on-reload
fix css not inserting on reload
2021-05-06 21:40:13 +02:00
d274e80f75 minify 2021-05-06 21:41:08 +03:00
a98b8945fb lint 2021-05-06 21:32:44 +03:00
6b72599f80 directly playPause video element 2021-05-06 21:20:42 +03:00
4b6fe78a1a fix css not inserting on reload 2021-05-06 18:40:56 +03:00
d000c03fca lint 2021-05-06 05:40:31 +03:00
c0a185ba68 refactor addEventListener 2021-05-06 05:18:06 +03:00
ef0813e638 fix preventDefault() being called on *all* keys 2021-05-06 04:58:05 +03:00
25e9f44260 fix listener override condition 2021-05-06 04:56:06 +03:00
2d6e858e8f lint 2021-05-06 04:43:31 +03:00
53bf7c5068 playlist download progressBar using chokidar 2021-05-06 04:41:58 +03:00
13fb686188 started playlist downlaod messageBox 2021-05-06 03:33:49 +03:00
61c5494588 custom metadata on playlist-download 2021-05-06 03:02:06 +03:00
d96fefbc24 fix error thrown when downloading playlist 2021-05-06 02:51:10 +03:00
e18b7c1013 allow unlimited playlist size 2021-05-06 02:28:35 +03:00
f190b51dcc lint 2021-05-06 02:17:48 +03:00
ca41c12f7c use media propery if exist in song-info 2021-05-06 02:05:48 +03:00
844edbe2f4 fix metadata when downloading unplayed song 2021-05-06 01:46:14 +03:00
78974c02e5 save in-app-menu activation state on launch 2021-05-05 21:12:52 +03:00
4508464fd1 update custom-electron-titlebar version 2021-05-05 20:39:08 +03:00
dd6455a559 update in-app-menu 2021-05-05 20:37:29 +03:00
6b147b098a fix prompt width 2021-05-05 03:48:07 +03:00
834f8674a3 massive prompt speed boost with v1.1.0 2021-05-05 03:27:47 +03:00
5cee331abe update prompt version and lint 2021-05-05 02:53:05 +03:00
98c00f7a60 format proxy example 2021-05-05 02:30:08 +03:00
db8d946178 fix electron dependency 2021-05-05 02:08:24 +03:00
b97a86f6dc Update yarn.lock 2021-05-05 01:55:25 +03:00
34a4e6be3d proxy url check 2021-05-05 01:47:53 +03:00
22c5ea5000 lint 2021-05-05 01:25:45 +03:00
79acf6c0ba Volume Steps Prompt
Precise-Volume Global Shortcuts Prompt
2021-05-05 00:42:42 +03:00
ebaa01896f Merge remote-tracking branch 'upstream/master' into custom-electron-prompt 2021-05-04 23:48:27 +03:00
TC
d4811b7901 Revert "Remove preload.js in plugin uses and use front plugin injection"
This reverts commit 4cb658daca.
2021-05-04 22:31:49 +02:00
TC
bf409967b2 Import front logger at top level 2021-05-04 21:30:10 +02:00
TC
4cb658daca Remove preload.js in plugin uses and use front plugin injection 2021-05-04 21:29:39 +02:00
8aeddcf8d8 Merge pull request #224 from Araxeus/menu-fixes
Menu tweaks
2021-05-04 21:24:29 +02:00
fb81e1bdd5 ignore did-fail-load error code -3
bug with in-app-menu
2021-05-04 02:04:17 +03:00
d5b9e3c960 stringify did-fail-load error
directly preload front-logger
simplify front-logger
2021-05-04 01:22:47 +03:00
TC
c7ff536ed5 Bump version to 1.12.0 2021-05-03 22:24:19 +02:00
TC
7dbb5fc86d Update electron to 11.4.4 2021-05-02 22:41:38 +02:00
8f766bcbaa resolve merge conflict 2021-05-02 23:41:16 +03:00
TC
f65c6c89ae Fix package.json indent, update yarn.lock 2021-05-02 22:30:24 +02:00
472462cdcb Merge pull request #228 from Araxeus/interactive-notifications
Interactive notifications for windows
2021-05-02 22:27:36 +02:00
8575996e46 Merge branch 'menu-fixes' of https://github.com/Araxeus/youtube-music into menu-fixes 2021-05-02 23:26:27 +03:00
02d16ca510 fix typo
Co-authored-by: th-ch <th-ch@users.noreply.github.com>
2021-05-02 23:25:46 +03:00
1f69048c86 minify switch case
Co-authored-by: th-ch <th-ch@users.noreply.github.com>
2021-05-02 23:25:34 +03:00
442aafd2c5 remove redundant dialog import 2021-05-02 23:25:20 +03:00
6082a6549a Merge branch 'master' into interactive-notifications 2021-05-02 22:25:01 +02:00
2567702b44 Merge pull request #236 from Araxeus/precise-volume
[Plugin] Precise volume control
2021-05-02 21:41:17 +02:00
ec981ac547 refactor registerAllShortcuts 2021-04-30 05:09:49 +03:00
d0d4ada7c2 restore original menu lint 2021-04-30 04:33:23 +03:00
54cbe3faa4 lint 2021-04-30 04:29:01 +03:00
49e51de274 update shortcuts config 2021-04-30 04:13:03 +03:00
e456035f29 fix typo 2021-04-30 03:22:36 +03:00
964974c142 add keybind changer v1 2021-04-30 03:04:38 +03:00
b63eb1c8b4 Merge pull request #244 from th-ch/snyk-upgrade-99aee86a0f7b96c0f871bcfabfb6e986
[Snyk] Upgrade electron-store from 7.0.2 to 7.0.3
2021-04-29 23:36:33 +02:00
603bcf7d9d Merge pull request #233 from th-ch/snyk-upgrade-db0717b422c1c3d1fcb50ff90a0b95cd
[Snyk] Upgrade @cliqz/adblocker-electron from 1.20.3 to 1.20.4
2021-04-29 23:34:51 +02:00
TC
0468a23c4f Fix getFolder util (main/renderer process) 2021-04-29 23:28:27 +02:00
f95e29df45 Merge pull request #231 from Araxeus/dependencies-update
Dependencies update
2021-04-29 23:27:21 +02:00
79d95d9477 Merge branch 'master' into dependencies-update 2021-04-29 23:10:52 +02:00
a406ba4ca0 Merge pull request #245 from th-ch/fix-downloader-metadata
Fix downloader metadata
2021-04-29 23:05:17 +02:00
TC
dfbda7c10b Set metadata in back (to have cover) 2021-04-29 22:57:47 +02:00
TC
c11ecd3323 Set max file length to 255 in downloader 2021-04-29 22:57:12 +02:00
TC
8a5c39ee53 Fix download URL 2021-04-29 22:56:33 +02:00
c38035188b fix: upgrade electron-store from 7.0.2 to 7.0.3
Snyk has created this PR to upgrade electron-store from 7.0.2 to 7.0.3.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-04-29 02:19:11 +00:00
TC
ba02d372f7 Update yarn.lock 2021-04-28 22:23:31 +02:00
5312b3694b Merge pull request #196 from semvis123/lastfm
Last.fm support
2021-04-28 22:22:44 +02:00
d0800bb31c small refactor 2021-04-28 16:58:14 +03:00
e272d38ca5 fix typo 2021-04-28 16:54:05 +03:00
66517af81c fix typo 2021-04-28 16:33:12 +03:00
d2925ee3f9 make variable names clearer 2021-04-28 04:30:19 +03:00
729714375b update camelCase 2021-04-28 04:27:50 +03:00
b77643b928 remove proxy from menu 2021-04-28 03:54:59 +03:00
0491babe0a fix typo 2021-04-28 03:36:00 +03:00
0adb36cfb8 leave debug for next PR 2021-04-28 03:08:25 +03:00
8dc486f18f remove local prompt 2021-04-28 02:51:19 +03:00
a229ba9c15 disable reload of plugins on window created 2021-04-28 02:46:13 +03:00
e4eed2e519 add custom-electron-prompt
also use it to set proxy option
2021-04-28 02:41:44 +03:00
395eac26a3 switch function name to camelCase
Co-authored-by: th-ch <th-ch@users.noreply.github.com>
2021-04-27 23:52:08 +03:00
e9d7ddebb2 defensive code
Co-authored-by: th-ch <th-ch@users.noreply.github.com>
2021-04-27 23:51:29 +03:00
5dc1179d54 implement keybind prompt 2021-04-27 23:48:06 +03:00
8decdf4346 Merge pull request #239 from Araxeus/discord-fix
simple fix for discord plugin
2021-04-27 21:51:07 +02:00
98fd6240ba update inline doc 2021-04-26 21:09:42 +03:00
5a77528526 enable global volume shortcuts in advanced config 2021-04-26 21:01:19 +03:00
d4fdced538 addEventListener insead of .onwheel 2021-04-25 02:22:08 +03:00
8b1bbdf360 Add Video Player Mousewheel Volume Control
(if hide-video-player plugin is disabled)
2021-04-23 05:29:03 +03:00
eae4cca148 Update readme.md 2021-04-23 04:25:48 +03:00
a194046168 win.once() instead of win.on 2021-04-23 04:06:54 +03:00
7c6ed7bb31 once instead of on 2021-04-23 04:01:40 +03:00
20123d8245 revert to original lint format 2021-04-23 03:50:00 +03:00
650945418d simple fix 2021-04-23 03:42:00 +03:00
064facb048 remove slider on-hover after 3 seconds if !focused 2021-04-23 01:20:03 +03:00
0bc1b5e0d3 lint 2021-04-22 16:30:34 +03:00
65f6822199 Show volume slider on volume change 2021-04-22 14:44:37 +03:00
021d2a8a54 disable native volume-slider listeners 2021-04-22 05:34:54 +03:00
5fa8f3ef6f add option for plugin to have a preload.js 2021-04-22 05:34:43 +03:00
10dffdbde2 refactor + lint 2021-04-19 01:45:32 +03:00
72716afcd3 lint 2021-04-18 01:44:18 +03:00
00468c7d0e use timeout ID to stop callback 2021-04-18 00:44:22 +03:00
b7b1316e70 add rapidFire option to counter prompt 2021-04-17 22:55:25 +03:00
97a9e63231 xo --fix 2021-04-17 21:17:07 +03:00
3f50ab7cfc lint 2021-04-17 20:43:48 +03:00
341a06aae7 add prompt with number counter 2021-04-17 20:30:06 +03:00
c48260f10c add advanced option to change volume steps 2021-04-17 16:42:13 +03:00
12a2517697 xo --fix 2021-04-17 15:03:19 +03:00
49698ea669 fix changing settings when plugin is disabled 2021-04-17 05:08:07 +03:00
834202411d enable changing shortcut setting without restart 2021-04-17 04:38:23 +03:00
94e152bb57 add optional arrowkeys controls option 2021-04-17 04:14:54 +03:00
5adcc3efad fix set volume on first run after not using plugin 2021-04-17 02:38:45 +03:00
b65bc65d7c save volume to settings 2021-04-17 02:01:19 +03:00
06958c424c refactor 2021-04-16 23:30:43 +03:00
02896cac03 xo --fix 2021-04-16 23:02:16 +03:00
c0ec1bc5cf update inline doc 2021-04-16 22:37:34 +03:00
40968d573c add precise scrollwheel control + precise tooltip 2021-04-16 21:52:56 +03:00
9f848e3e76 fix: upgrade @cliqz/adblocker-electron from 1.20.3 to 1.20.4
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.20.3 to 1.20.4.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-04-16 02:19:07 +00:00
f765fb63f0 scrape artistName from playBar 2021-04-15 15:59:41 +03:00
ff6a486daf fix unresponsive dialog response 2021-04-15 15:35:22 +03:00
bb6ad14111 navbar background black fix visual bug 2021-04-15 12:40:09 +03:00
a2207a2cb3 remove " - Topic" from artist name 2021-04-14 13:44:32 +03:00
c764d657d7 cleanup unresponsiveDialog 2021-04-14 13:42:39 +03:00
2b6cecc441 Update ytpl 2021-04-12 20:56:52 +03:00
61d83be52e taskbar-mediacontrol no longer override win.hide
(electron 11.4.2 fixed the bug that required that)
2021-04-12 20:19:36 +03:00
9f2362d346 update dependecies 2021-04-12 20:19:35 +03:00
193c3823b6 remove downloads-folder and use electron instead 2021-04-12 20:19:35 +03:00
09d9f72db2 add unresponsive listener 2021-04-10 02:51:38 +03:00
3d41d04818 Revert "fix rare crash due to unfocus effect"
This reverts commit 80b1207640.
2021-04-09 22:28:55 +03:00
46ac0a1ed3 change notification priority to show only on linux 2021-04-09 19:10:20 +03:00
e6d77c165e Center Icon on ALL notifications
Delete notification on windowclosed
Refactor notifications.utils.setOption
2021-04-09 18:39:57 +03:00
18f041f1c6 clarify button purpose 2021-04-09 03:26:46 +03:00
9c0a633677 fix unPause option compatibility 2021-04-09 03:15:57 +03:00
095196785a add note to notifications.interactive 2021-04-09 02:32:14 +03:00
80b1207640 fix rare crash due to unfocus effect 2021-04-09 02:19:06 +03:00
ba6244780c minify 2021-04-09 02:14:11 +03:00
d8dc4656e4 stylecheck 2021-04-09 01:08:22 +03:00
30675e0567 remove appID because of bug:
Button would not transmit event
2021-04-08 18:56:13 +03:00
e6efddc639 add windows interactive notifications 2021-04-08 16:54:46 +03:00
47eace97bd Merge branch 'menu-fixes' of https://github.com/Araxeus/youtube-music into menu-fixes 2021-04-06 21:58:58 +03:00
980ffb45e9 Create readme.md
refactor and css fix

xo --fix

add inline doc

fix typo
2021-04-06 21:57:16 +03:00
17fd499420 fix typo 2021-04-06 01:51:11 +03:00
0e9b15722a add inline doc 2021-04-06 01:30:47 +03:00
724c213af1 xo --fix 2021-04-05 23:18:54 +03:00
a215035d07 refactor and css fix 2021-04-05 18:28:27 +03:00
25d0f50f3d Create readme.md 2021-04-05 04:52:22 +03:00
6d44a579a4 move prompt to provide 2021-04-05 04:21:52 +03:00
106e461beb fix typo 2021-04-05 04:08:55 +03:00
6472002f8a fix hide-menu timing + minify log function 2021-04-05 04:04:29 +03:00
11bd1adbd4 stylecheck 2021-04-05 03:25:45 +03:00
28d366ab19 add back-to-front logger
This somehow fix "did-fail-load" being called on song start, with in-app-plugin-activated
2021-04-05 03:04:06 +03:00
10e29090d8 stylecheck 2021-04-04 21:52:16 +03:00
73b0ddc2ce css tweaks 2021-04-04 21:25:41 +03:00
7c8e946871 implement custom prompt 2021-04-04 19:58:25 +03:00
d12d16348a custom dark skin for prompt 2021-04-04 15:06:14 +03:00
421fe67930 ignore proxy if equal to example 2021-04-04 02:46:12 +03:00
8291cdfc12 disable dev tools on electron-prompt 2021-04-04 02:37:19 +03:00
2e6fffc903 Revert "fix Connection Error when using in-app-menu"
This reverts commit 8b6c60bb17.
2021-04-03 23:46:16 +03:00
8b6c60bb17 fix Connection Error when using in-app-menu 2021-04-03 22:59:20 +03:00
1cae35a62b fix in-app-menu hideMenu on launch 2021-04-03 22:34:12 +03:00
70b03b71e4 refactor and stylecheck 2021-04-03 22:04:40 +03:00
317521bba6 fix memory leak +
in-app-menu updates menu only if needed
2021-04-03 21:53:39 +03:00
061e4a9e5f add 'electron-prompt' and use it for setting proxy 2021-04-03 21:51:35 +03:00
ec3adff706 fix bug when loading window with no connection 2021-04-03 20:15:48 +03:00
5524a14c87 move advanced options to dedicated submenu +
add "Use Proxy" checkbox
2021-04-03 19:20:56 +03:00
e1e8c943f3 Merge branch 'master' into lastfm 2021-04-03 17:21:56 +02:00
0c6630d2d9 additional cleanup/refactoring 2021-04-03 17:12:28 +02:00
80a7d2c255 remove redundant roles 2021-04-03 15:54:51 +03:00
2b3a20c5ff Minimalize tray menu
-doesnt include main menu template anymore
2021-04-03 15:47:32 +03:00
216205200c fix in-app-menu navbar opacity + scrollbar color 2021-04-03 15:30:33 +03:00
TC
61e7124516 Support proxy in advanced options 2021-04-03 12:20:48 +02:00
2ab216effc Merge pull request #215 from th-ch/menu-options
In-app-menu plugin - rename plugin & configure menu builder
2021-04-03 12:10:56 +02:00
TC
1e59301c0e Write metadata in front + pass it along (useful if the song is changed) 2021-04-03 12:04:49 +02:00
TC
d5a2c1cad6 Format front downloader 2021-04-03 12:01:31 +02:00
TC
b5c60ee6a9 Re-format front metadata lib 2021-04-03 11:35:31 +02:00
TC
533b8a8cb7 Metadata: call getImage in front 2021-04-03 11:34:55 +02:00
TC
fecb193ded Re-use default config to get base url in downloader 2021-04-03 11:34:23 +02:00
dc5d257082 Merge pull request #221 from Araxeus/download-song-that-isnt-playing
Allows downloading songs that aren't currently playing
2021-04-03 11:29:20 +02:00
c690473b2e Merge pull request #222 from Keyboardsheep/master
Updated download plugin icon color to match other icons
2021-04-03 10:58:37 +02:00
04fa5eb289 updated download.html svg 2021-04-03 00:10:09 -05:00
d6cd3a0ead updated download.html svg 2021-04-03 00:06:58 -05:00
a23f281734 updated download.html svg 2021-04-03 00:05:36 -05:00
135d58e1f5 updated download.html svg 2021-04-02 23:55:32 -05:00
832ff19e51 allows downloading song that aren't playing 2021-04-03 05:38:21 +03:00
c7bef5ac7b Merge pull request #216 from Araxeus/fix-duplicate-notification
[Notification Plugin] Fix duplicate notification
2021-04-02 23:10:19 +02:00
2254cac15b Merge pull request #213 from th-ch/song-info-front
Pass metadata to front + use metadata URL in downloader
2021-04-02 22:59:57 +02:00
TC
01d574a302 Merge branch 'master' of github.com:th-ch/youtube-music into menu-options
# By Araxeus
# Via GitHub (2) and Araxeus (1)
* 'master' of github.com:th-ch/youtube-music:
  remove 'shortcuts'+'discord' from default plugins
  cleanup styled-bars code
  only refresh if plugin has a menu.js
  update styled-bars to support all changes permantly
  Refresh menu on plugin enable/disable
2021-04-02 22:40:31 +02:00
d67d697847 Merge pull request #217 from Araxeus/Refresh-menu-on-plugin-enable/disable
Refresh menu on plugin enable/disable (show/hide submenu)
2021-04-02 21:43:12 +02:00
8c9e37f8a1 Merge pull request #218 from Araxeus/remove-shortcuts-from-default-plugins
remove 'shortcuts' from default plugins
2021-04-02 21:38:18 +02:00
TC
77393c5324 Replace click callback by override in custom menu 2021-04-02 21:20:50 +02:00
e66db051a9 remove 'shortcuts'+'discord' from default plugins 2021-04-01 21:24:11 +03:00
5670a6d1b4 cleanup styled-bars code 2021-04-01 21:09:31 +03:00
02d45bed74 only refresh if plugin has a menu.js 2021-04-01 19:21:21 +03:00
adc0d145c3 update styled-bars to support
all changes permantly
2021-04-01 19:02:39 +03:00
58481e3133 Refresh menu on plugin enable/disable 2021-04-01 18:10:08 +03:00
a3ec9b7b78 add notification on unpause option 2021-04-01 17:44:40 +03:00
2d534b0293 fix duplicate notification 2021-04-01 15:50:26 +03:00
d73d0cf8ce fix duplicate notification 2021-04-01 15:39:07 +03:00
fbe490c28d Merge remote-tracking branch 'upstream/master' into styled-bars-download-chooser 2021-04-01 02:56:11 +03:00
TC
c09de43154 Rename plugin to in-app-menu + hidden titleBarStyle 2021-03-31 22:37:12 +02:00
TC
be651ebb4b Parameter in menu builder for tray 2021-03-31 22:35:01 +02:00
TC
3fe793cd4d CSS: border radius compatibility 2021-03-31 21:18:31 +02:00
TC
a8cfe399b3 Rename bar var 2021-03-31 21:15:52 +02:00
TC
ff9e39e2ee Re-order dependencies 2021-03-31 21:15:16 +02:00
TC
0d2b61472c Use template builder in custom menu plugin 2021-03-31 21:14:59 +02:00
TC
f9f3482bf1 Pass callback in menu builder 2021-03-31 21:14:55 +02:00
TC
400a2a9bab Add option to menu to render without roles 2021-03-31 20:18:20 +02:00
TC
36864b4c2f Format custom menu plugin 2021-03-31 20:17:12 +02:00
TC
5671b99b7e Format new menu items 2021-03-31 20:15:55 +02:00
76f88686da Merge pull request #201 from Araxeus/styled-bars
[Plugin] styled-bars
2021-03-31 20:07:41 +02:00
ba42a8b269 increase font size for menu and menuItems 2021-03-30 02:18:02 +03:00
ae7def2313 Rename variables and function for clarity 2021-03-30 02:00:35 +03:00
e55176511f Merge pull request #212 from SapuSeven/master
Add configurable notification urgency
2021-03-29 22:42:17 +02:00
TC
640f146373 Use metadata URL in downloader (fallback to current URL) 2021-03-29 22:00:49 +02:00
TC
ebe8755613 Song provider: call callbacks when data is updated 2021-03-29 21:59:45 +02:00
TC
05eee7cb0f Store metadata in front 2021-03-29 21:33:33 +02:00
TC
7ac9fda1eb Send back metadata to front 2021-03-29 21:33:07 +02:00
TC
6987a0a585 Set isPaused default to undefined 2021-03-29 21:32:41 +02:00
1a338fb9e5 Add advanced configuration menu for notifications 2021-03-28 23:33:10 +02:00
8dc18bbe5e Add configurable notification urgency 2021-03-28 23:23:45 +02:00
TC
64c2b32b24 Add url to song info 2021-03-28 22:17:57 +02:00
TC
f01ef5d955 Ensure filename is not empty in downloader plugin 2021-03-28 21:54:21 +02:00
TC
221ee0be05 Order deps in menu file in downloader plugin (+ prettier) 2021-03-28 21:53:50 +02:00
2b8ba02c2a Merge pull request #207 from Araxeus/Download-Plugin-Directory-Chooser
add Download Folder Chooser
2021-03-28 21:51:02 +02:00
TC
b06583afce Bundle imports + prettier 2021-03-28 21:16:33 +02:00
b8b1ae7e88 Merge pull request #194 from semvis123/songprovider-update
Improved songinfo provider, by using the data from the '/player' request
2021-03-28 21:12:03 +02:00
b67b1bed13 refactor for clarity 2021-03-26 20:32:30 +03:00
33fa9f8f50 fix array input + use getFolder() 2021-03-26 17:52:23 +03:00
a7087aaa38 uses getFolder() now 2021-03-26 17:41:12 +03:00
a7170762d4 Merge pull request #10 from Araxeus/Download-Plugin-Directory-Chooser
Download plugin directory chooser
2021-03-26 05:59:45 +03:00
ea3d198723 in tray, delete quit button from submenu
also delete useless nonfunctional view submenu
2021-03-26 05:25:46 +03:00
fe8f048571 add Download Folder Chooser 2021-03-26 04:07:45 +03:00
09d2feb15b Add quit + restart button to main menu ) 2021-03-26 00:24:03 +02:00
33d4c1a60e Refactor into switchMenuVisibility 2021-03-26 00:23:28 +02:00
cbd7a13275 Merge pull request #180 from th-ch/snyk-upgrade-58542eeb4b38266ae86c95a43f335043
[Snyk] Upgrade @cliqz/adblocker-electron from 1.20.0 to 1.20.1
2021-03-25 22:22:23 +01:00
903b7f8718 lint 2021-03-25 23:16:00 +02:00
TC
88cd1651c3 Clean metadata + apply pngcrush on images in taskbar plugin 2021-03-25 22:15:39 +01:00
13ff5f26a2 Plugin doesn't create a new menu anymore
instead it modifies the original menu
2021-03-25 23:13:54 +02:00
57345a5fd2 Merge pull request #200 from Araxeus/master
[Plugin] taskbar-mediacontrol  (for Windows)
2021-03-25 22:11:49 +01:00
bd82bd2249 added extra comments and corrected existing ones 2021-03-25 21:27:33 +01:00
f253a69656 added comment for the added function 2021-03-25 21:11:55 +01:00
493a5835f8 Merge branch 'master' into lastfm 2021-03-25 20:34:40 +01:00
bffbcb229d Made the suffixes configurable and added VEVO suffix to remove 2021-03-25 20:15:43 +01:00
b5ec431b0a Merge remote-tracking branch 'upstream/master' into styled-bars 2021-03-25 18:39:06 +02:00
259706478f Merge remote-tracking branch 'upstream/master' 2021-03-25 18:33:48 +02:00
c9f172ef21 fix scrollbar clash with nav bar 2021-03-25 16:43:01 +02:00
eb32c98b76 fix tray option radio selection 2021-03-25 07:51:06 +02:00
95c3f04c10 more fixes for plugin options menu 2021-03-25 02:18:23 +02:00
d4daf7231c merge source (#3)
* Added Discord timeout

* Add getOptions in plugin util

* Mutex in ffmpeg conversion (only supports one command at a time)

* Add menu customization in plugin system

* Add ytpl package (playlist info)

* Handle ffmpeg metadata flags when metadata is not present

* Only use artist in file name if present

* Export sendError method

* Handle image not present in metadata util

* Add downloader utils (getFolder and default menu label)

* Pass (optional) existing metadata and subfolder in mp3 converter

* Add listener to download playlist

* Add custom menu in downloader plugin ("download playlist" item)

* nit: fix main CSS style

* Only set the "enable" item in menu if plugin not enabled

* Navigation plugin: inject HTML once CSS is loaded

Co-authored-by: Sem Visscher <semvisscher10@gmail.com>
Co-authored-by: TC <th-ch@users.noreply.github.com>
2021-03-25 01:36:22 +02:00
9a95f435ad merge source (#2)
* Added Discord timeout

* Add getOptions in plugin util

* Mutex in ffmpeg conversion (only supports one command at a time)

* Add menu customization in plugin system

* Add ytpl package (playlist info)

* Handle ffmpeg metadata flags when metadata is not present

* Only use artist in file name if present

* Export sendError method

* Handle image not present in metadata util

* Add downloader utils (getFolder and default menu label)

* Pass (optional) existing metadata and subfolder in mp3 converter

* Add listener to download playlist

* Add custom menu in downloader plugin ("download playlist" item)

* nit: fix main CSS style

* Only set the "enable" item in menu if plugin not enabled

* Navigation plugin: inject HTML once CSS is loaded

Co-authored-by: Sem Visscher <semvisscher10@gmail.com>
Co-authored-by: TC <th-ch@users.noreply.github.com>
2021-03-25 01:02:42 +02:00
5218b80cab preparation for plugin menu update 2021-03-25 01:00:06 +02:00
TC
b1665c880b Navigation plugin: inject HTML once CSS is loaded 2021-03-24 23:06:35 +01:00
6395dfe425 Merge pull request #203 from th-ch/downloader-plugin-playlist
Add playlist feature in downloader plugin + custom menus in plugin system
2021-03-24 22:39:50 +01:00
304ad6e767 Merge pull request #192 from semvis123/master
Added Discord timeout
2021-03-24 22:38:56 +01:00
TC
587a093aff Only set the "enable" item in menu if plugin not enabled 2021-03-24 21:55:53 +01:00
TC
91b49e4a16 nit: fix main CSS style 2021-03-24 21:52:33 +01:00
TC
e72915c5d0 Add custom menu in downloader plugin ("download playlist" item) 2021-03-24 21:52:12 +01:00
TC
bee2da567b Add listener to download playlist 2021-03-24 21:51:11 +01:00
TC
951689c5ea Pass (optional) existing metadata and subfolder in mp3 converter 2021-03-24 21:50:46 +01:00
TC
4146ae60bc Add downloader utils (getFolder and default menu label) 2021-03-24 21:50:31 +01:00
TC
6bcf5efb65 Handle image not present in metadata util 2021-03-24 21:48:12 +01:00
TC
ddf10f1052 Export sendError method 2021-03-24 21:45:59 +01:00
TC
7edca44ed8 Only use artist in file name if present 2021-03-24 21:44:54 +01:00
TC
ebc3f16597 Handle ffmpeg metadata flags when metadata is not present 2021-03-24 21:44:54 +01:00
TC
9dad31775c Add ytpl package (playlist info) 2021-03-24 21:44:54 +01:00
TC
b1089b66c3 Add menu customization in plugin system 2021-03-24 21:44:54 +01:00
TC
84142ab27e Mutex in ffmpeg conversion (only supports one command at a time) 2021-03-24 21:44:48 +01:00
TC
fd518e39ff Add getOptions in plugin util 2021-03-24 21:36:17 +01:00
2fb4cbcf02 move icons to 'assets' folder 2021-03-24 19:38:45 +02:00
d3337c7d3c titlebar dragArea fix + refactor 2021-03-24 00:13:38 +02:00
5fd11bf009 fixed search page header height 2021-03-23 22:15:16 +02:00
92603a1e7f fix search button alignment 2021-03-23 22:09:10 +02:00
7d8afe3476 style check 2021-03-23 22:03:48 +02:00
f9c66ead50 css color fix 2021-03-23 19:47:47 +02:00
a12d5a982f fix library UI bug 2021-03-23 19:29:07 +02:00
c1f176fa21 Fixed MenuItem roles + add restart+quit button 2021-03-23 16:17:50 +02:00
f1dbe4ab6c Allow hide menu options (uses Escape key) 2021-03-23 15:07:31 +02:00
459ebf7070 xo lint --fix 2021-03-23 03:58:19 +02:00
8cf0ec16bb Merge branch 'styled-bars' of https://github.com/Araxeus/youtube-music into styled-bars 2021-03-23 03:51:16 +02:00
87558c67c8 stylecheck 2021-03-23 03:50:59 +02:00
8727a2e299 separate plugins to different branches 2021-03-23 02:51:12 +02:00
b8c5c87cfa Styled Bars [Titlebar + Scrollbar] 2021-03-23 02:46:13 +02:00
ce2970eefa fixed line that xo-lint broke 2021-03-22 13:48:08 +02:00
24fea5a24a added back original yarn.lock
(was deleted by accident)
2021-03-22 04:22:23 +02:00
5285680eed xo lint --fix 2021-03-22 04:17:39 +02:00
17e63194ad fixed typo bug 2021-03-22 04:06:42 +02:00
6427b3406c Override hide(),show(),isVisible from inside plugin
instead of changing source code
2021-03-22 04:01:19 +02:00
df8c77cd3e Wait for song to start before setting thumbar 2021-03-22 03:01:46 +02:00
41796aec06 Tray Break Thumbar Fix
using  win.minimize()
and win.setSkipTaskbar(bool)
instead of win.hide() / win.show()
2021-03-22 01:26:20 +02:00
1355b692b9 Remove the - Topic for more matches 2021-03-21 22:28:05 +01:00
2c13ef40e2 taskbar-mediacontrol plugin
Add UI Control to windows taskbar preview
2021-03-21 20:08:07 +02:00
2bb67db888 Fixed backwards compatibility 2021-03-21 18:47:16 +01:00
204f384d01 fetch highest resolution image instead of lowest resolution 2021-03-21 14:14:26 +01:00
42e3d48caf Added now playing to last-fm 2021-03-19 22:00:00 +01:00
4747050b60 Added working lastfm support
currently only played songs are added
2021-03-19 21:32:33 +01:00
TC
c926db7f13 Increase top margin for MacOS 2021-03-18 22:12:18 +01:00
TC
8cce3f4503 Add view/navigation menu 2021-03-18 22:02:19 +01:00
3464b0383c small readability changes 2021-03-18 17:53:30 +01:00
d852029d25 Improved songinfo provider, by using the data from the '/player' request 2021-03-18 17:48:56 +01:00
ca8d62d4e2 Added Discord timeout 2021-03-17 10:22:19 +01:00
0632920a6f fix: upgrade @cliqz/adblocker-electron from 1.20.0 to 1.20.1
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.20.0 to 1.20.1.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-03-10 02:19:11 +00:00
c5bda4f3be Merge pull request #178 from th-ch/snyk-upgrade-da4beb25f2fa1631098996298cd49f89
[Snyk] Upgrade electron-store from 7.0.1 to 7.0.2
2021-03-09 19:50:17 +01:00
3dc92b4939 fix: upgrade electron-store from 7.0.1 to 7.0.2
Snyk has created this PR to upgrade electron-store from 7.0.1 to 7.0.2.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-03-05 02:19:09 +00:00
TC
150146385f Bump version 2021-03-04 23:09:27 +01:00
TC
f50bd32fa3 Fix resumeOnStart option 2021-03-04 23:09:01 +01:00
0dcf820944 Merge pull request #177 from NNowakowski/resume-last-song-on-start
Added function to toggle resuming of last song when app starts
2021-03-04 22:57:41 +01:00
6fd16684f7 Merge pull request #175 from th-ch/snyk-upgrade-024effb4b0bec6e73345b87366580cf3
[Snyk] Upgrade discord-rpc from 3.1.4 to 3.2.0
2021-03-04 22:54:13 +01:00
TC
eaa957168f Add plugin to disable autoplay 2021-03-04 22:47:53 +01:00
TC
796a7aaaf1 Fix download/speed menu item 2021-03-04 21:29:37 +01:00
9aaae7b2d9 🚀 Added function to toggle resuming of last song when app starts 2021-03-04 14:14:49 +01:00
c00609223b fix: upgrade discord-rpc from 3.1.4 to 3.2.0
Snyk has created this PR to upgrade discord-rpc from 3.1.4 to 3.2.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-03-04 02:19:26 +00:00
5641c3fc87 Merge pull request #154 from th-ch/snyk-upgrade-3f26f6e01fe99104189d358a840963dd
[Snyk] Upgrade @cliqz/adblocker-electron from 1.19.0 to 1.20.0
2021-02-24 23:11:02 +01:00
dd1bdae947 Added metadata to downloader plugin, and updated packages 2021-02-24 22:53:31 +01:00
TC
70973b2281 Clear cache after 20s if option is enabled 2021-02-24 21:08:25 +01:00
TC
5842a6d42f Handle uncaught errors 2021-02-24 20:53:41 +01:00
538ab52abd fix: upgrade @cliqz/adblocker-electron from 1.19.0 to 1.20.0
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.19.0 to 1.20.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-02-12 02:19:15 +00:00
TC
5a1358b310 Bump version 2021-02-07 18:30:01 +01:00
TC
024ed9085c Allow custom shortcuts in plugin 2021-02-07 18:29:35 +01:00
TC
b2c9e445b7 Fix shortcuts 2021-02-07 18:29:08 +01:00
TC
5b8d5d5ee4 Do not run the app after Windows install 2021-02-07 14:43:37 +01:00
TC
a82efaf91b Bump YoutubeNonStop 2021-02-07 14:38:30 +01:00
TC
980090f108 Remember window position 2021-02-07 13:25:01 +01:00
TC
f7f31850d3 Add plugin to control playback speed like in YouTube (from 0.25 to 2) 2021-02-07 11:46:57 +01:00
3415ce3965 Merge pull request #146 from th-ch/snyk-upgrade-aba6333ac62e918200d72118a7613fb6
[Snyk] Upgrade @ffmpeg/ffmpeg from 0.9.6 to 0.9.7
2021-02-06 22:34:21 +01:00
436d9ef3e1 Merge pull request #144 from semvis123/master
Reuse the same notification, instead of creating a new one each time the song changes.
2021-02-06 22:30:35 +01:00
TC
da61621a62 Check updates after 2s 2021-02-06 22:25:23 +01:00
TC
3976d1c862 Add option to reset cache 2021-02-06 22:15:57 +01:00
a9980190d0 fix: upgrade @ffmpeg/ffmpeg from 0.9.6 to 0.9.7
Snyk has created this PR to upgrade @ffmpeg/ffmpeg from 0.9.6 to 0.9.7.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-02-05 02:19:17 +00:00
e75dfcf41c little fixes 2021-02-01 22:00:18 +01:00
1fdf2416ad Update back.js 2021-02-01 21:34:56 +01:00
df627788c9 small formatting changes 2021-02-01 20:23:46 +01:00
c1ee58b47f Reuse the same notifcation, instead of creating a new notification each time. 2021-02-01 20:18:16 +01:00
d6f7c54370 Merge pull request #136 from th-ch/snyk-upgrade-57f12acf80f9a08801a63b7852a10ff8
[Snyk] Upgrade ytdl-core from 4.2.1 to 4.3.0
2021-01-23 12:53:18 +01:00
3a03fb51cd fix: upgrade ytdl-core from 4.2.1 to 4.3.0
Snyk has created this PR to upgrade ytdl-core from 4.2.1 to 4.3.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-01-22 02:21:11 +00:00
TC
e19964edf6 GH page: fix canvas size 2021-01-18 21:58:18 +01:00
TC
3bcf409f2b GH page 2021-01-17 20:32:23 +01:00
TC
37289b9cbe Downloader: 'artist - title' format for filename 2021-01-16 10:19:10 +01:00
TC
227902b7cc Add shortcuts to provider 2021-01-15 23:16:47 +01:00
TC
644950ccc0 Bump version 2021-01-15 09:31:34 +01:00
TC
d848937e6a Rename discord plugin 2021-01-14 23:16:59 +01:00
446aa8becc Merge pull request #121 from th-ch/snyk-upgrade-d29b51f488ba9deb228b72952a3f7b8e
[Snyk] Upgrade electron-debug from 3.1.0 to 3.2.0
2021-01-14 23:12:27 +01:00
TC
d52dbee13c Prettier utils 2021-01-14 23:09:16 +01:00
TC
ed09304ed7 Refactor tray to use provider + play/pause on click 2021-01-14 23:09:04 +01:00
TC
2861473097 Set title/artist metadata in downloader 2021-01-14 23:01:26 +01:00
39dc22973e Merge pull request #1 from th-ch/master
bring the new commits to this fork
2021-01-14 22:24:21 +01:00
25fd48697b Merge pull request #125 from th-ch/refactor-providers
Refactor providers
2021-01-14 21:03:26 +01:00
TC
aec542e95e Update discord plugin for new provider + wait for ready 2021-01-13 22:22:22 +01:00
TC
eae95befe1 Merge branch 'master' of github.com:th-ch/youtube-music into refactor-providers
# By TC (9) and semvis123 (2)
# Via GitHub (4) and semvis123 (1)
* 'master' of github.com:th-ch/youtube-music:
  renamed DiscordRPC to Discord
  Downloader plugin: log audio bitrate
  Disable context isolation (to load ffmpeg wasm)
  Use contextBridge in preload script + update navigation plugin
  Fix downloader plugin with context isolation
  Bump version
  Add portable target to windows builds
  Added Discord rich presence and added extra properties to songinfo provider
  Bump version
  Allow custom audio extensions in downloader
  Defensive: handle null/undefined ffmpeg args
2021-01-13 22:10:10 +01:00
f0200e7b38 Merge pull request #124 from semvis123/master
Added Discord rich presence and added extra properties to songInfo provider
2021-01-13 22:08:10 +01:00
70775f4988 renamed DiscordRPC to Discord 2021-01-13 21:56:53 +01:00
074840ef56 Merge pull request #127 from th-ch/fix-plugins-context-isolation
Fix plugins with context isolation
2021-01-13 21:44:37 +01:00
TC
b54c501eeb Downloader plugin: log audio bitrate 2021-01-13 21:36:16 +01:00
6d587cb432 Merge pull request #126 from th-ch/windows-portable
Windows portable exe
2021-01-13 21:32:53 +01:00
TC
39c8031cd7 Disable context isolation (to load ffmpeg wasm) 2021-01-13 21:28:42 +01:00
TC
9ad1dad6df Use contextBridge in preload script + update navigation plugin 2021-01-12 22:54:04 +01:00
TC
79e8fc2fac Fix downloader plugin with context isolation 2021-01-12 22:52:21 +01:00
TC
67c4422eb8 Bump version 2021-01-12 21:37:02 +01:00
TC
18df1223af Add portable target to windows builds 2021-01-12 21:36:38 +01:00
0fafed7c53 Merge pull request #118 from th-ch/dl-custom-audio-format
Downloader plugin - custom audio format
2021-01-12 21:35:55 +01:00
TC
f7cbf2c221 No autoloading of providers (loaded on demand in plugins) 2021-01-12 21:19:01 +01:00
TC
87d2693e2b Use refactored provider in shortcuts plugin 2021-01-12 21:18:32 +01:00
TC
de1e4196d9 Use refactored provider in notification plugin 2021-01-12 21:18:05 +01:00
TC
9110e79c16 Use refactored providers in touchbar plugin 2021-01-12 21:17:40 +01:00
TC
0743034de0 Split providers in 2 2021-01-12 21:17:08 +01:00
TC
f1ddb92886 nit: prettier 2021-01-12 21:16:29 +01:00
a8ce87f2cc Added Discord rich presence and added extra properties to songinfo provider 2021-01-12 20:16:49 +01:00
86a329a61b fix: upgrade electron-debug from 3.1.0 to 3.2.0
Snyk has created this PR to upgrade electron-debug from 3.1.0 to 3.2.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-01-12 02:24:30 +00:00
77e24f41a5 Merge pull request #102 from semvis123/master
Globalized the song info and song controls, and updated Touch Bar for it.
2021-01-10 22:15:11 +01:00
3a5d9bd973 Loads providers before plugins 2021-01-10 21:37:50 +01:00
69f486d53f moved the song info file and removed the capital letters in folder name 2021-01-10 21:22:01 +01:00
5d89043884 fixed typo, plugins/songInfo/back.js
Co-authored-by: th-ch <th-ch@users.noreply.github.com>
2021-01-10 20:31:55 +01:00
2b297c245a Merge pull request #120 from th-ch/bump-electron
Bump electron to v11
2021-01-10 14:37:07 +01:00
TC
945a61fafd Remove warning by setting contextIsolation 2021-01-10 14:10:16 +01:00
TC
1ba166a172 Bump electron to v11 2021-01-10 12:29:12 +01:00
TC
a9a840b6c3 Bump version 2021-01-08 22:41:17 +01:00
TC
6a100c8cb1 Allow custom audio extensions in downloader 2021-01-08 22:29:25 +01:00
TC
b04e2ea130 Defensive: handle null/undefined ffmpeg args 2021-01-08 22:26:44 +01:00
5ac356bf91 Merge pull request #116 from th-ch/snyk-upgrade-041c3272121410c1cb380e1fbc7f9dce
[Snyk] Upgrade electron-updater from 4.3.5 to 4.3.6
2021-01-08 21:29:50 +01:00
35ceb7e83e Merge pull request #117 from th-ch/snyk-upgrade-7528cf91d37d9330a45f611ce738e40e
[Snyk] Upgrade @cliqz/adblocker-electron from 1.18.8 to 1.19.0
2021-01-08 21:28:08 +01:00
5c0cc08d80 fix: upgrade @cliqz/adblocker-electron from 1.18.8 to 1.19.0
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.18.8 to 1.19.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-01-07 02:19:51 +00:00
0bf77e592a fix: upgrade electron-updater from 4.3.5 to 4.3.6
Snyk has created this PR to upgrade electron-updater from 4.3.5 to 4.3.6.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2021-01-05 02:20:56 +00:00
ec3c1578d2 Merge pull request #109 from th-ch/snyk-upgrade-4e8a81615c57edf69b21ad2a68431dfd
[Snyk] Upgrade ytdl-core from 4.1.1 to 4.1.2
2020-12-29 16:35:55 +01:00
e8ed580ecc Merge pull request #104 from th-ch/dependabot/npm_and_yarn/node-notifier-8.0.1
Bump node-notifier from 8.0.0 to 8.0.1
2020-12-29 16:30:59 +01:00
e2cc2628ae fix: upgrade ytdl-core from 4.1.1 to 4.1.2
Snyk has created this PR to upgrade ytdl-core from 4.1.1 to 4.1.2.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-12-25 02:20:03 +00:00
9e31e753f0 Bump node-notifier from 8.0.0 to 8.0.1
Bumps [node-notifier](https://github.com/mikaelbr/node-notifier) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/mikaelbr/node-notifier/releases)
- [Changelog](https://github.com/mikaelbr/node-notifier/blob/v8.0.1/CHANGELOG.md)
- [Commits](https://github.com/mikaelbr/node-notifier/compare/v8.0.0...v8.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-22 16:02:44 +00:00
588e0019d6 Changed function style in notifications 2020-12-21 22:11:23 +01:00
5bffdbd628 Simplifies the notification plugin to use the globalized song info 2020-12-21 21:35:02 +01:00
ee239da647 removed unnecessary await keyword 2020-12-21 21:11:00 +01:00
9be3e1afe9 Globalized the songinfo and song controls, and changed the pause/play button.
Globalized the songinfo and song controls, and changed the pause/play button. The songInfo file should eventually get another location, because it isn't really a plugin.
2020-12-21 18:18:34 +01:00
TC
af02b60ce3 Bump version 2020-12-20 20:17:24 +01:00
fbdae0452c Add touchbar plugin to list 2020-12-20 20:16:35 +01:00
d68d73eb4c Merge pull request #101 from semvis123/master
Added Touch Bar plugin
2020-12-20 20:14:49 +01:00
2de27d2e24 Merge pull request #99 from th-ch/snyk-upgrade-d3ff12c0e23681ac817994e603d37491
[Snyk] Upgrade @ffmpeg/core from 0.8.4 to 0.8.5
2020-12-19 22:03:40 +01:00
TC
15591e24d7 Merge branch 'master' of github.com:th-ch/youtube-music into snyk-upgrade-d3ff12c0e23681ac817994e603d37491
# By snyk-bot
# Via GitHub (1) and snyk-bot (1)
* 'master' of github.com:th-ch/youtube-music:
  fix: upgrade @ffmpeg/ffmpeg from 0.9.5 to 0.9.6
2020-12-19 21:50:24 +01:00
715d59e3d4 Merge pull request #100 from th-ch/snyk-upgrade-9aa7c0fdfaaeba26ca66fb92b731a1af
[Snyk] Upgrade @ffmpeg/ffmpeg from 0.9.5 to 0.9.6
2020-12-19 21:32:10 +01:00
f71e0e9da9 Switched like/dislike positions
Switched like/dislike positions to match youtube musics layout
2020-12-16 20:30:01 +01:00
ba3779db07 Updated comment - touchbar plugin 2020-12-16 20:10:05 +01:00
d99aa0242f Added like and dislike buttons 2020-12-16 19:54:44 +01:00
3ea859de09 Added song image 2020-12-16 19:44:26 +01:00
7473677477 touchbar plugin - fixed code style 2020-12-16 15:57:24 +01:00
c3e2c13808 added initial touchbar support 2020-12-16 15:52:01 +01:00
5074ba2f48 fix: upgrade @ffmpeg/ffmpeg from 0.9.5 to 0.9.6
Snyk has created this PR to upgrade @ffmpeg/ffmpeg from 0.9.5 to 0.9.6.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-12-16 02:20:20 +00:00
a8b8f1079f fix: upgrade @ffmpeg/core from 0.8.4 to 0.8.5
Snyk has created this PR to upgrade @ffmpeg/core from 0.8.4 to 0.8.5.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-12-16 02:20:16 +00:00
e52987df92 Merge pull request #96 from th-ch/svg-readme
[Readme] Web folder for readme assets + new SVG animation
2020-12-13 16:40:55 +01:00
TC
01fc965170 Web folder for readme assets + new svg animation 2020-12-13 16:19:33 +01:00
ff71f29206 Merge pull request #94 from th-ch/linux-deb-rpm
Add new Linux targets (deb, freebsd, rpm)
2020-12-13 13:40:07 +01:00
TC
a47c5144ac Additional linux targets 2020-12-12 23:08:05 +01:00
TC
9b979b2273 Bump version 2020-12-12 22:28:38 +01:00
TC
81198192bb Add new linux targets (deb, rpm) 2020-12-12 22:28:30 +01:00
c03a08e76a Merge pull request #92 from th-ch/dependabot/npm_and_yarn/ini-1.3.7
Bump ini from 1.3.5 to 1.3.7
2020-12-12 11:26:49 +01:00
807e21eabf Bump ini from 1.3.5 to 1.3.7
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-11 18:36:02 +00:00
36f9d640df Merge pull request #90 from th-ch/adblocking
Fix adblocking
2020-12-11 19:35:10 +01:00
TC
39f30b143b Bump version to 1.7.4 2020-12-10 18:42:17 +01:00
TC
49497d0efb Bump adblocker dependency 2020-12-10 18:42:00 +01:00
TC
79c795927a Add uBlock Origin filters to default sources 2020-12-10 18:40:31 +01:00
TC
66c5ce46ca Fix adblocker preloading to inject scripts/styles 2020-12-10 18:39:58 +01:00
TC
22c7f70c93 Adblocker: add option to disable default lists 2020-12-08 21:40:03 +01:00
TC
467171a17e Bugfix: only use cache with no additional blocklists 2020-12-06 17:55:51 +01:00
3022facbea Readme: add youtube-music logo to badges 2020-12-05 12:33:26 +01:00
a67bf5ea43 Readme: add link to releases 2020-12-05 12:31:14 +01:00
3a1a3d4241 Merge pull request #82 from hbarsaiyan/master
Add AUR badge + beautify badges
2020-12-05 12:29:26 +01:00
9197f4a0e1 Add link to AUR badge
Co-authored-by: th-ch <th-ch@users.noreply.github.com>
2020-12-05 16:18:54 +05:30
d21220693b Add AUR tag + beautify tags 2020-12-05 08:07:17 +00:00
TC
e07cac2406 Bump version to 1.7.1 2020-12-03 22:30:15 +01:00
TC
fd97576611 Option to restart the app on config changes 2020-12-03 22:29:46 +01:00
6ab01056e0 Merge pull request #79 from th-ch/advanced-config
Refactor config, custom plugin options
2020-12-03 21:48:57 +01:00
TC
4dcbd2e7f0 Add plugin options in migration 2020-12-03 20:43:04 +01:00
TC
b94d0d4e8b Adblocker - advanced options (caching or not, additional lists) 2020-12-03 20:43:04 +01:00
TC
7b20b9339d Download plugin - advanced options (folder, FFmpeg args) 2020-12-03 20:43:04 +01:00
TC
4d4a1f038b Custom plugin options 2020-12-03 20:42:58 +01:00
TC
e5ec79e345 Watch changes in config and update menu 2020-12-03 18:31:01 +01:00
TC
f4fe5c2a58 Allow editing config (advanced) 2020-12-03 18:25:31 +01:00
TC
a5130c1d3f Move migrations into separate const 2020-12-03 18:25:08 +01:00
TC
8ab2da0482 Refactor config for simpler use and advanced options in plugins 2020-12-03 18:16:37 +01:00
TC
1b54b19f3f Add "build:linux" script 2020-12-02 22:22:05 +01:00
TC
be7e6e431f Bump version to 1.6.5 2020-12-02 22:14:43 +01:00
6e42b097f8 Merge pull request #77 from th-ch/disable-hardware-acceleration
Add option to disable hardware acceleration
2020-12-02 22:12:42 +01:00
TC
ef9cd8cd24 Add option to disable hardware acceleration 2020-12-02 22:07:15 +01:00
8f3e165917 Merge pull request #76 from th-ch/downloader-plugin-retry-and-upgrade-dep
Downloader plugin - retry and upgrade dependencies
2020-12-02 21:41:04 +01:00
TC
33a11efe9a Update ytdl-core to 4.1.1 2020-12-02 21:16:39 +01:00
TC
9a97436cd8 Allow up to 3 retries in downloader 2020-12-02 21:16:12 +01:00
f7935c0024 Merge pull request #70 from hbarsaiyan/master
Reflect Arch Linux package name change
2020-11-29 21:17:02 +01:00
2b33d4e857 Reflect Arch Linux package name change
Package name has been changed to youtube-music-bin.
2020-11-29 23:57:07 +05:30
ed16c35a57 Merge pull request #67 from th-ch/hide-menu
Option to hide menu
2020-11-28 18:45:53 +01:00
TC
ae5b85d8d7 Autoupdate modal: add download/disable updates buttons 2020-11-28 18:13:41 +01:00
47b4414eb3 Merge pull request #68 from hbarsaiyan/master
Add Arch Linux installation instructions
2020-11-28 11:09:07 +01:00
e329bb2201 Add Arch Linux installation instructions 2020-11-28 15:22:34 +05:30
TC
155ef9e5f5 Bump version 2020-11-27 21:39:33 +01:00
TC
4bac3ace18 Option to hide menu (win/linux) 2020-11-27 21:39:15 +01:00
1d2b53f6ee Merge pull request #64 from th-ch/ci
Improve CI
2020-11-24 00:32:07 +01:00
TC
0fd49330d3 CI: cache yarn directory 2020-11-24 00:13:01 +01:00
TC
4b0e79345f Fail fast (Can only re-run all jobs, not just one) 2020-11-24 00:13:01 +01:00
0c819e9aa9 Merge pull request #63 from th-ch/menu-visible
Ensure menu is visible on all platforms
2020-11-23 23:41:07 +01:00
20d591c554 Merge pull request #62 from th-ch/snyk-upgrade-407335ffa685010c89f68cbb1a8b27a6
[Snyk] Upgrade @cliqz/adblocker-electron from 1.18.3 to 1.18.4
2020-11-23 23:29:04 +01:00
TC
002469a98d Bump adblocker 2020-11-23 23:16:54 +01:00
TC
3bc8430201 No CI run on pull_request (already on every push) 2020-11-23 23:11:44 +01:00
TC
db447a5d62 Bump patch version 2020-11-23 23:04:16 +01:00
TC
72527d0522 Disable autoHideMenuBar (so menu bar is always visible) 2020-11-23 22:59:48 +01:00
TC
cf4827d780 Run CI on every push/PR 2020-11-23 22:55:20 +01:00
TC
9b02591767 Test that menu bar is visible 2020-11-23 22:52:00 +01:00
2b243f6dcb fix: upgrade @cliqz/adblocker-electron from 1.18.3 to 1.18.4
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.18.3 to 1.18.4.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-11-23 02:19:19 +00:00
TC
4d4aadfdfc Re-init download button in case of error 2020-11-22 10:23:20 +01:00
2937db3dde Update plugins list in readme 2020-11-22 10:20:03 +01:00
TC
e1166c06fa Do not cancel CI jobs if one fails 2020-11-22 10:10:31 +01:00
3ee0777628 Merge pull request #60 from th-ch/github-action
Add github action to build/release
2020-11-22 01:01:05 +01:00
3441a6f215 Link build badge to releases 2020-11-22 00:40:47 +01:00
235150a0cc Update build badge (GitHub Actions) 2020-11-22 00:34:49 +01:00
c1427c24d8 Merge pull request #59 from th-ch/node-12
Bump to node 12
2020-11-22 00:33:51 +01:00
TC
941dd90d77 Delete AppVeyor/Travis CI integration 2020-11-22 00:14:28 +01:00
TC
3da76020b1 Bump version (new release through GH actions) 2020-11-22 00:13:46 +01:00
TC
575dc5177d Use xvfb to run tests on linux 2020-11-22 00:04:08 +01:00
TC
27255dc477 Add GH token env var from secret 2020-11-21 23:53:36 +01:00
TC
fc4754a170 GH action to build/release 2020-11-21 23:38:04 +01:00
2e3a177f01 Merge pull request #59 from th-ch/node-12
Bump to node 12
2020-11-21 23:19:39 +01:00
TC
059f756d89 Bump to node 12 2020-11-21 22:54:43 +01:00
TC
e197087a50 Add downloader (video -> mp3) plugin (in music menu) 2020-11-21 22:50:33 +01:00
TC
e0f61f128e Bump version 2020-11-13 22:21:31 +01:00
TC
9ee7598375 Auto-hide menu bar 2020-11-13 22:16:11 +01:00
TC
fc48b920a8 Bump app version to 1.6.0 2020-11-11 12:22:36 +01:00
TC
9bc81da6f2 Plugins/event handlers in each window 2020-11-11 12:16:01 +01:00
TC
2b3363f5dc Bump YoutubeNonStop 2020-11-11 11:36:40 +01:00
TC
bcff6e5134 Add notifications plugin (notify of song on play event) 2020-11-11 11:35:58 +01:00
1dcf76b006 Merge pull request #54 from th-ch/snyk-upgrade-1b704161a30f8a56030e33c24f620f14
[Snyk] Upgrade electron-store from 6.0.0 to 6.0.1
2020-11-04 22:36:53 +01:00
7bdc0f42a2 fix: upgrade electron-store from 6.0.0 to 6.0.1
Snyk has created this PR to upgrade electron-store from 6.0.0 to 6.0.1.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-10-27 02:19:22 +00:00
TC
023f5b6bc3 Block alert if leaving page when playing (onbeforeunload event) 2020-10-19 22:44:39 +02:00
TC
3e97e9307c Option to toggle devtools 2020-10-18 17:02:12 +02:00
TC
4299ba7865 Update version to 1.5.0 2020-10-04 18:27:07 +02:00
TC
855d8007a7 Add plugin to hide video player 2020-10-04 18:23:30 +02:00
TC
f239ec3232 Force yargs-parser version to fix vulnerability 2020-10-04 18:08:15 +02:00
TC
5f0dcbb3fc Bump electron to v10 (+ remove devtron, bump spectron) 2020-10-04 17:39:18 +02:00
TC
97dce5ad41 Bump dependencies 2020-10-04 17:20:43 +02:00
TC
1b3e4df1b2 Tests: get electron path using require 2020-10-04 17:18:33 +02:00
TC
8d74a0a9b5 Navigation plugin: fix arrow style 2020-10-04 15:06:52 +02:00
fbce109554 Merge pull request #45 from th-ch/dependabot/npm_and_yarn/node-fetch-2.6.1
Bump node-fetch from 2.6.0 to 2.6.1
2020-10-04 14:18:24 +02:00
f4641acdbb Merge pull request #47 from th-ch/snyk-upgrade-468d0cfdab69d8231f03ed7e76703d57
[Snyk] Upgrade @cliqz/adblocker-electron from 1.17.0 to 1.18.0
2020-10-04 14:16:16 +02:00
02ae9f8187 Bump node-fetch from 2.6.0 to 2.6.1
Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.6.0 to 2.6.1.
- [Release notes](https://github.com/bitinn/node-fetch/releases)
- [Changelog](https://github.com/node-fetch/node-fetch/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/bitinn/node-fetch/compare/v2.6.0...v2.6.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-04 12:15:45 +00:00
9f428415bb Merge pull request #40 from th-ch/snyk-upgrade-2d5f77a2ca49e9d611dfcac4a5d0c7e1
[Snyk] Upgrade electron-updater from 4.3.3 to 4.3.4
2020-10-04 14:14:57 +02:00
c7d3741b97 fix: upgrade @cliqz/adblocker-electron from 1.17.0 to 1.18.0
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.17.0 to 1.18.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-09-15 02:19:07 +00:00
6404ec0919 fix: upgrade electron-updater from 4.3.3 to 4.3.4
Snyk has created this PR to upgrade electron-updater from 4.3.3 to 4.3.4.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-08-07 02:19:20 +00:00
4cd2d10cad Merge pull request #38 from th-ch/dependabot/npm_and_yarn/elliptic-6.5.3
Bump elliptic from 6.5.2 to 6.5.3
2020-08-03 10:44:10 +02:00
57f5d302d5 Merge pull request #37 from th-ch/snyk-upgrade-414f996ee5dc52155ccdd3d4b64505ac
[Snyk] Upgrade @cliqz/adblocker-electron from 1.16.0 to 1.16.1
2020-08-03 10:42:30 +02:00
168524ba50 Merge pull request #34 from th-ch/dependabot/npm_and_yarn/lodash-4.17.19
Bump lodash from 4.17.15 to 4.17.19
2020-08-03 10:39:29 +02:00
149362f2a7 Bump elliptic from 6.5.2 to 6.5.3
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-01 20:48:22 +00:00
6c330046b7 fix: upgrade @cliqz/adblocker-electron from 1.16.0 to 1.16.1
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.16.0 to 1.16.1.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-07-30 02:19:12 +00:00
884a2cc226 Bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-19 21:35:20 +00:00
3882118121 Merge pull request #32 from th-ch/start-at-login
Option to start at login
2020-07-13 11:25:32 +02:00
TC
0fd2e7f51c Bump version to 1.4.0 2020-07-12 21:14:41 +02:00
TC
408aa9bb59 Option to start at login 2020-07-12 21:14:41 +02:00
eec6993b95 Merge pull request #31 from th-ch/dependabot/npm_and_yarn/electron-8.2.4
Bump electron from 8.2.1 to 8.2.4
2020-07-12 21:13:56 +02:00
eb8e0a37d6 Bump electron from 8.2.1 to 8.2.4
Bumps [electron](https://github.com/electron/electron) from 8.2.1 to 8.2.4.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.2.1...v8.2.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-07 02:01:10 +00:00
TC
2a915f4fae Fix electron deprecation warnings 2020-07-05 15:57:25 +02:00
TC
26994000d7 readme: yarn run build -> `yarn build 2020-07-05 15:44:26 +02:00
78f143ea10 Merge pull request #30 from th-ch/snyk-upgrade-3427638aafd84464f9f38998c7e3bc6f
[Snyk] Upgrade electron-store from 5.1.1 to 5.2.0
2020-07-05 15:43:02 +02:00
684a369fed fix: upgrade electron-store from 5.1.1 to 5.2.0
Snyk has created this PR to upgrade electron-store from 5.1.1 to 5.2.0.

See this package in NPM:
https://www.npmjs.com/package/electron-store

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-06-28 02:19:06 +00:00
b19470ad0b Merge pull request #29 from th-ch/snyk-upgrade-a4c19e5e6b1b92c533cd6d3ed8538fa2
[Snyk] Upgrade @cliqz/adblocker-electron from 1.14.4 to 1.15.0
2020-06-14 22:40:24 +02:00
6691cbf8c0 Merge pull request #28 from th-ch/snyk-upgrade-54c1400dcbff5fcbde1071153f1be456
[Snyk] Upgrade electron-debug from 3.0.1 to 3.1.0
2020-06-14 22:39:18 +02:00
7ac98cf024 fix: upgrade @cliqz/adblocker-electron from 1.14.4 to 1.15.0
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.14.4 to 1.15.0.

See this package in NPM:
https://www.npmjs.com/package/@cliqz/adblocker-electron

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-06-14 02:19:04 +00:00
3d835fbeaa fix: upgrade electron-debug from 3.0.1 to 3.1.0
Snyk has created this PR to upgrade electron-debug from 3.0.1 to 3.1.0.

See this package in NPM:
https://www.npmjs.com/package/electron-debug

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-06-13 02:19:27 +00:00
d0824f52ea Merge pull request #27 from th-ch/snyk-upgrade-9a04364d99d1aed92239f3dd981f3d67
[Snyk] Upgrade electron-updater from 4.3.1 to 4.3.2
2020-06-05 22:48:14 +02:00
8c945100e2 fix: upgrade electron-updater from 4.3.1 to 4.3.2
Snyk has created this PR to upgrade electron-updater from 4.3.1 to 4.3.2.

See this package in NPM:
https://www.npmjs.com/package/electron-updater

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-06-05 02:19:01 +00:00
68801c8e2b Merge pull request #26 from th-ch/snyk-upgrade-107ef53d6b16bb061dc783179b8991a7
[Snyk] Upgrade electron-updater from 4.3.0 to 4.3.1
2020-05-29 21:32:29 +02:00
a06eece4a0 fix: upgrade electron-updater from 4.3.0 to 4.3.1
Snyk has created this PR to upgrade electron-updater from 4.3.0 to 4.3.1.

See this package in NPM:
https://www.npmjs.com/package/electron-updater

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-05-19 04:19:35 +02:00
873e093ff0 fix: upgrade electron-updater from 4.3.0 to 4.3.1
Snyk has created this PR to upgrade electron-updater from 4.3.0 to 4.3.1.

See this package in NPM:
https://www.npmjs.com/package/electron-updater

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-05-19 04:19:34 +02:00
9c343d58ef Merge pull request #25 from th-ch/snyk-upgrade-86a869f28fc1113ae78c2dcd1eea4b90
[Snyk] Upgrade @cliqz/adblocker-electron from 1.14.1 to 1.14.2
2020-05-14 22:14:50 +02:00
fed7a1df17 fix: upgrade @cliqz/adblocker-electron from 1.14.1 to 1.14.2
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.14.1 to 1.14.2.

See this package in NPM:
https://www.npmjs.com/package/@cliqz/adblocker-electron

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-05-14 04:19:22 +02:00
89d8907bc6 fix: upgrade @cliqz/adblocker-electron from 1.14.1 to 1.14.2
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.14.1 to 1.14.2.

See this package in NPM:
https://www.npmjs.com/package/@cliqz/adblocker-electron

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-05-14 04:19:21 +02:00
08d145b6fc Merge pull request #24 from th-ch/tests
[Tests] Add integration tests
2020-05-03 13:35:41 +02:00
TC
57d3545701 Launch tests in CI 2020-05-03 12:58:28 +02:00
TC
08710558f5 Add tests section to readme 2020-05-03 11:44:23 +02:00
TC
b80007bbd5 Tests: only stop if running (in case of error when launching app) 2020-05-03 11:44:00 +02:00
TC
ab0c93d443 Test script in package.json 2020-05-01 18:59:00 +02:00
TC
e84f045201 Add simple test to ensure app launches properly 2020-05-01 18:58:08 +02:00
TC
692b6b22aa Enable nodeIntegration in test env (required by Spectron) 2020-05-01 18:34:23 +02:00
TC
954a58bcf5 Add util to detect test env 2020-05-01 18:34:01 +02:00
TC
bce5b7d8eb Add jest config and test environment to launch app 2020-05-01 18:33:43 +02:00
TC
736a706801 Add jest, spectron and getPort util for tests 2020-05-01 18:33:02 +02:00
TC
37cac19d9c Bump version to 1.3.3 2020-04-29 22:08:22 +02:00
TC
4824dda5d5 Move tray click callback in setUpTray 2020-04-27 12:25:24 +02:00
TC
3fa3c3ab9e Bump version to 1.3.2 2020-04-26 16:25:56 +02:00
TC
058371ace8 Show/hide window when clicking on tray 2020-04-26 16:25:37 +02:00
TC
430687f4d6 Hide the app (no quit) on close if tray enabled 2020-04-26 16:10:13 +02:00
TC
45f4b3bc28 Use is.macOS shortcut 2020-04-26 15:47:55 +02:00
7c12344d05 Merge pull request #22 from th-ch/snyk-upgrade-2844f3669e30ddb5a4f23b0caf25ece1
[Snyk] Upgrade electron-updater from 4.2.5 to 4.3.0
2020-04-26 14:51:47 +02:00
98213005d0 fix: upgrade electron-updater from 4.2.5 to 4.3.0
Snyk has created this PR to upgrade electron-updater from 4.2.5 to 4.3.0.

See this package in NPM:
https://www.npmjs.com/package/electron-updater

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-04-24 04:19:57 +02:00
db61589735 fix: upgrade electron-updater from 4.2.5 to 4.3.0
Snyk has created this PR to upgrade electron-updater from 4.2.5 to 4.3.0.

See this package in NPM:
https://www.npmjs.com/package/electron-updater

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-04-24 04:19:56 +02:00
TC
26dd7c5f71 Format blocker file + use window session in adblocker 2020-04-12 21:57:13 +02:00
TC
3bbab525c6 Only set user-agent on accounts.google.com (affects preload scripts otherwise) 2020-04-12 21:54:35 +02:00
TC
d42b7bc559 Bump version to 1.3.1 2020-04-12 20:35:44 +02:00
TC
69f88ed840 Force user agent for Google OAuth to work 2020-04-12 19:33:45 +02:00
eb10bf2b34 Merge pull request #21 from th-ch/add-options-and-tray
Add options and tray
2020-04-12 19:32:42 +02:00
TC
e051c4a9a2 Only checked for updates if configured in options 2020-04-12 19:00:06 +02:00
TC
477202bf24 Setup tray (based on options) 2020-04-12 19:00:06 +02:00
TC
876e52bb01 Tray lib 2020-04-12 19:00:06 +02:00
TC
edfd5be6a2 Add youtube-music util to interact with the window 2020-04-12 19:00:06 +02:00
TC
baa4f17276 Add tray icon in assets 2020-04-12 19:00:06 +02:00
TC
1de6f3e2ed Add options to menu, export menu config 2020-04-12 19:00:06 +02:00
TC
1c56e7fea6 Add options in store (tray, app visible, auto-update) 2020-04-12 19:00:06 +02:00
TC
4c46bceb7d Formatting 2020-04-12 19:00:05 +02:00
TC
7098cd7602 Update build command in readme 2020-04-12 16:55:25 +02:00
210418e5d3 Merge pull request #20 from th-ch/upgrade-outdated-dependencies
Upgrade outdated dependencies
2020-04-12 16:29:35 +02:00
TC
297de08278 Upgrade xo 2020-04-12 15:38:43 +02:00
TC
050bdd3c02 Upgrade rimraf 2020-04-12 15:35:59 +02:00
TC
3edc6e9b37 Upgrade electron-store 2020-04-12 15:33:33 +02:00
TC
2e721c942f Upgrade electron-devtools-installer 2020-04-12 15:30:56 +02:00
TC
8d375070ac Upgrade electron-debug 2020-04-12 15:29:36 +02:00
387a6d9f16 Merge pull request #19 from th-ch/migrate-to-adblock-rs
[Plugins] Migrate ad blocker
2020-04-12 15:20:51 +02:00
TC
3999b991fa Bump minor version (for this PR and new features to come) 2020-04-12 15:11:47 +02:00
TC
3d9e59dc90 Bump electron-builder (needed after electron upgrade) 2020-04-12 15:01:03 +02:00
TC
f25eb48f79 Generate the adblocker engine only once (by using built-in caching) 2020-04-12 14:17:38 +02:00
TC
6e45e7b2cb No rust/cargo install in build workers (not needed anymore) 2020-04-12 13:28:49 +02:00
TC
59bba8e590 Disable RDP access to AppVeyor build workers 2020-04-12 13:24:40 +02:00
TC
422c3fc28d Migrate from adblock-rs to cliqz 2020-04-12 13:23:35 +02:00
TC
6fb251f00f Enable RDP to the build worker 2020-04-12 11:43:38 +02:00
TC
1cb876da55 Update travis config 2020-04-12 00:07:51 +02:00
TC
c5021d5ca2 30 min timeout in Travis 2020-04-11 22:43:06 +02:00
TC
359360b058 Use VS 2019 to build on Windows 2020-04-11 21:55:28 +02:00
TC
80da3feb01 Upgrade extract-path and minimist to fix vuln 2020-04-11 21:28:55 +02:00
TC
ff074c10a6 Install rust/cargo for CI builds 2020-04-11 15:47:58 +02:00
TC
098776e31a Bump electron to last version 2020-04-11 14:00:12 +02:00
TC
d702321969 Postinstall scripts per plugin 2020-04-11 13:37:22 +02:00
TC
4748cf92bb Remove electron-rebuild 2020-04-11 13:36:56 +02:00
TC
5e3b7c0db7 Migrate adblock plugin to adblock-rs 2020-04-11 12:43:33 +02:00
TC
4648854a04 Remove adblock, install adblock-rs 2020-04-11 12:42:31 +02:00
0dc28064db Add badge for downloads 2020-03-15 21:45:36 +01:00
a3d5c038ea Merge pull request #13 from th-ch/snyk-upgrade-5770951f6ab79d4e413754bb7cab1225
[Snyk] Upgrade electron-localshortcut from 3.1.0 to 3.2.1
2020-03-15 12:38:57 +01:00
TC
91f7a0d1a5 Upgrade electron-localshortcut from 3.1.0 to 3.2.1 2020-03-15 12:22:41 +01:00
d5a6e50017 Merge pull request #12 from th-ch/snyk-upgrade-ab1b7600d9bb3bfaa5180a93741f304a
[Snyk] Upgrade electron-updater from 4.0.6 to 4.2.2
2020-03-15 12:21:17 +01:00
TC
6d8204f60a Bump appveyor to node 10 (semver requires node >=10) 2020-03-15 12:02:44 +01:00
TC
f25bb59065 Bump electron updater 2020-03-15 12:02:12 +01:00
39c7d56791 Merge pull request #15 from th-ch/snyk-upgrade-d9ce5c80db3f2ceedbda9bf03d7e2e8e
[Snyk] Upgrade electron-debug from 2.1.0 to 2.2.0
2020-03-15 11:56:01 +01:00
1a0369b69d Merge pull request #16 from th-ch/fix-vulnerability
Fix vulnerability
2020-03-15 11:55:19 +01:00
e5b4e01a96 fix: upgrade electron-debug from 2.1.0 to 2.2.0
Snyk has created this PR to upgrade electron-debug from 2.1.0 to 2.2.0.

See this package in NPM:
https://www.npmjs.com/package/electron-debug

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-03-15 02:28:47 +00:00
TC
0a6587942b Add snyk badge to readme 2020-03-15 00:15:28 +01:00
TC
7050dfca5c Bump electron-store to fix a vulnerability 2020-03-15 00:03:58 +01:00
4a7a94240a Merge pull request #11 from th-ch/autoconfirm-when-paused
Plugin: autoconfirm when paused
2020-03-14 23:43:22 +01:00
TC
479013f9c9 Generate fake package.json for electron-builder to resolve modules 2020-03-14 23:11:11 +01:00
TC
164c3141ca Bump version to 1.2.0 2020-03-14 18:14:54 +01:00
TC
234954a86c Travis: fix MacOS build 2020-03-14 18:03:26 +01:00
TC
8c19757dfc Readme: build with npm 2020-03-14 16:46:43 +01:00
TC
790185893d Build/release with npm on travis 2020-03-14 16:31:07 +01:00
TC
7a816fa4f3 Use node 10 in linux container 2020-03-14 15:22:45 +01:00
TC
d4b5c53dc3 Add env var to allow unresolved deps 2020-03-14 14:51:19 +01:00
TC
e1b83f07a8 Block promo element 2020-03-14 09:32:48 +01:00
TC
b855726973 New plugin: autoconfirm when paused 2020-03-14 09:32:37 +01:00
TC
9371a4827e Migrate to yarn to install packages without package.json (but keep npm rebuild) 2020-03-14 09:32:14 +01:00
TC
81ce939451 Lint readme 2020-03-13 22:17:54 +01:00
TC
6fd10ea4a0 Bump version to 1.1.6 2019-09-11 23:49:31 +02:00
TC
746b5f13bb Fix Google login 2019-09-11 23:46:19 +02:00
474bfd19a2 Merge pull request #7 from th-ch/dependabot/npm_and_yarn/eslint-utils-1.4.2
Bump eslint-utils from 1.3.1 to 1.4.2
2019-09-03 13:41:20 +02:00
71222649a0 Bump eslint-utils from 1.3.1 to 1.4.2
Bumps [eslint-utils](https://github.com/mysticatea/eslint-utils) from 1.3.1 to 1.4.2.
- [Release notes](https://github.com/mysticatea/eslint-utils/releases)
- [Commits](https://github.com/mysticatea/eslint-utils/compare/v1.3.1...v1.4.2)

Signed-off-by: dependabot[bot] <support@github.com>
2019-08-26 22:51:08 +00:00
TC
1a72129108 npm audit fix 2019-07-13 19:51:01 +02:00
3108e16018 Merge pull request #4 from th-ch/dependabot/npm_and_yarn/lodash.mergewith-4.6.2
Bump lodash.mergewith from 4.6.1 to 4.6.2
2019-07-13 19:47:14 +02:00
fae19f4533 Merge pull request #5 from th-ch/dependabot/npm_and_yarn/lodash-4.17.14
Bump lodash from 4.17.11 to 4.17.14
2019-07-13 19:47:01 +02:00
348f1b8189 Bump lodash from 4.17.11 to 4.17.14
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.11 to 4.17.14.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.11...4.17.14)

Signed-off-by: dependabot[bot] <support@github.com>
2019-07-13 05:20:15 +00:00
ffdc7f66b9 Bump lodash.mergewith from 4.6.1 to 4.6.2
Bumps [lodash.mergewith](https://github.com/lodash/lodash) from 4.6.1 to 4.6.2.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2019-07-11 10:21:14 +00:00
TC
07c4a429c1 Bump version to 1.1.5 2019-07-06 20:04:53 +02:00
TC
b10a1bb32d Fix navigation plugin 2019-07-06 20:03:29 +02:00
245 changed files with 25095 additions and 8218 deletions

View File

@ -1,7 +1,8 @@
root = true
[*]
indent_style = tab
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true

3
.eslintignore Normal file
View File

@ -0,0 +1,3 @@
.eslintrc.js
rollup.main.config.ts
rollup.preload.config.ts

69
.eslintrc.js Normal file
View File

@ -0,0 +1,69 @@
module.exports = {
extends: [
'eslint:recommended',
'plugin:import/recommended',
'plugin:import/typescript',
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/recommended-requiring-type-checking',
],
plugins: ['@typescript-eslint', 'import'],
parser: '@typescript-eslint/parser',
parserOptions: {
project: './tsconfig.json',
tsconfigRootDir: __dirname,
sourceType: 'module',
ecmaVersion: 'latest'
},
rules: {
'arrow-parens': ['error', 'always'],
'object-curly-spacing': ['error', 'always'],
'@typescript-eslint/no-floating-promises': 'off',
'@typescript-eslint/no-misused-promises': ['off', { checksVoidReturn: false }],
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
"@typescript-eslint/no-non-null-assertion": "off",
'import/first': 'error',
'import/newline-after-import': 'error',
'import/no-default-export': 'off',
'import/no-duplicates': 'error',
'import/order': [
'error',
{
'groups': ['builtin', 'external', ['internal', 'index', 'sibling'], 'parent', 'type'],
'newlines-between': 'always-and-inside-groups',
'alphabetize': {order: 'ignore', caseInsensitive: false}
}
],
'import/prefer-default-export': 'off',
'camelcase': ['error', {properties: 'never'}],
'class-methods-use-this': 'off',
'lines-around-comment': [
'error',
{
beforeBlockComment: false,
afterBlockComment: false,
beforeLineComment: false,
afterLineComment: false,
},
],
'max-len': 'off',
'no-mixed-operators': 'error',
'no-multi-spaces': ['error', {ignoreEOLComments: true}],
'no-tabs': 'error',
'no-void': 'error',
'no-empty': 'off',
'prefer-promise-reject-errors': 'off',
'quotes': ['error', 'single', {
avoidEscape: true,
allowTemplateLiterals: false,
}],
'quote-props': ['error', 'consistent'],
'semi': ['error', 'always'],
},
env: {
browser: true,
node: true,
es6: true,
},
ignorePatterns: ['dist', 'node_modules'],
};

4
.gitattributes vendored
View File

@ -1,2 +1,2 @@
* text=auto
*.js text eol=lf
* text=auto eol=lf
*.js text

75
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@ -0,0 +1,75 @@
name: Bug Report
description: Report a YouTube Music bug
title: "[Bug]: "
labels: "bug :beetle:"
body:
- type: checkboxes
attributes:
label: Preflight Checklist
description: Please ensure you've completed all of the following.
options:
- label: I use the latest version of YouTube Music (Application).
required: true
- label: I have searched the [issue tracker](https://github.com/th-ch/youtube-music/issues) for a bug report that matches the one I want to file, without success.
required: true
- label: I understand that **th-ch/youtube-music has NO affiliation with Google or YouTube**
required: true
- type: input
attributes:
label: YouTube Music (Application) Version
description: |
What version of the YouTube Music Application are you using?
Note: Please check if this issue is reproducible with the latest stable release.
placeholder: 2.0.0
validations:
required: true
- type: dropdown
attributes:
label: What operating system are you using?
options:
- Windows
- macOS
- Ubuntu
- Other Linux
- Other (specify below)
validations:
required: true
- type: input
attributes:
label: Operating System Version
description: What operating system version are you using? On Windows, click the Start button > Settings > System > About. On macOS, click the Apple Menu > About This Mac. On Linux, use lsb_release or uname -a.
placeholder: "e.g. Windows 10 version 1909, macOS Catalina 10.15.7, or Ubuntu 20.04"
validations:
required: true
- type: dropdown
attributes:
label: What arch are you using?
options:
- x64
- ia32
- arm64 (including Apple Silicon)
- Other (specify below)
validations:
required: true
- type: input
attributes:
label: Last Known Working YouTube Music (Application) version
description: (If applicable) What is the last version of YouTube Music this worked in?
placeholder: 1.20.0
- type: textarea
attributes:
label: Expected Behavior
description: A clear and concise description of what you expected to happen. (Add a replication step if applicable)
validations:
required: true
- type: textarea
attributes:
label: Actual Behavior
description: A clear description of what actually happens.
validations:
required: true
- type: textarea
attributes:
label: Additional Information
description: If your problem needs further explanation, or if the issue you're seeing cannot be reproduced in a gist, please add more information here.

View File

@ -0,0 +1,38 @@
name: Feature Request
description: Suggest an idea for YouTube Music
title: "[Feature Request]: "
labels: "enhancement :sparkles:"
body:
- type: checkboxes
attributes:
label: Preflight Checklist
description: Please ensure you've completed all of the following.
options:
- label: I use the latest version of YouTube Music (Application).
required: true
- label: I have searched the [issue tracker](https://github.com/th-ch/youtube-music/issues) for a feature request that matches the one I want to file, without success.
required: true
- type: textarea
attributes:
label: Problem Description
description: Please add a clear and concise description of the problem you are seeking to solve with this feature request.
validations:
required: true
- type: textarea
attributes:
label: Proposed Solution
description: Describe the solution you'd like in a clear and concise manner.
validations:
required: true
- type: textarea
attributes:
label: Alternatives Considered
description: A clear and concise description of any alternative solutions or features you've considered.
validations:
required: true
- type: textarea
attributes:
label: Additional Information
description: Add any other context about the problem here.
validations:
required: false

161
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,161 @@
name: Build YouTube Music
on:
push:
branches: [ master ]
pull_request:
env:
NODE_VERSION: "20.x"
jobs:
build:
name: Build YouTube Music
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
os: [ macos-latest, ubuntu-latest, windows-latest ]
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8
run_install: false
- name: Setup NodeJS
if: startsWith(matrix.os, 'macOS') != true
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: Setup NodeJS for macOS
if: startsWith(matrix.os, 'macOS')
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
# Only rollup build without release if it is a fork
- name: Rollup Build
if: github.repository == 'th-ch/youtube-music' && github.event_name == 'pull_request'
run: |
pnpm build
# Build and release if it's the main repository and is not pull-request
- name: Build and release on Mac
if: startsWith(matrix.os, 'macOS') && (github.repository == 'th-ch/youtube-music' && github.event_name != 'pull_request')
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pnpm release:mac
- name: Build and release on Linux
if: startsWith(matrix.os, 'ubuntu') && (github.repository == 'th-ch/youtube-music' && github.event_name != 'pull_request')
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pnpm release:linux
- name: Build and release on Windows
if: startsWith(matrix.os, 'windows') && (github.repository == 'th-ch/youtube-music' && github.event_name != 'pull_request')
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pnpm release:win
- name: Test
uses: coactions/setup-xvfb@v1
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
with:
run: pnpm test:debug
release:
runs-on: ubuntu-latest
name: Release YouTube Music
if: github.repository == 'th-ch/youtube-music' && github.ref == 'refs/heads/master'
needs: build
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8
run_install: false
- name: Setup NodeJS
if: startsWith(matrix.os, 'macOS') != true
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: Setup NodeJS for macOS
if: startsWith(matrix.os, 'macOS')
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Get version
run: |
echo "VERSION_TAG=v$(node -pe "require('./package.json').version")" >> $GITHUB_ENV
- name: Check if version already exists in tags
run: |
echo "VERSION_HASH=$(git rev-parse -q --verify 'refs/tags/${{ env.VERSION_TAG }}')" >> $GITHUB_ENV
echo "CHANGELOG_ANCHOR=$(echo $VERSION_TAG | sed -e 's/\.//g')" >> $GITHUB_ENV
- name: Fetch draft release
if: ${{ env.VERSION_HASH == '' }}
uses: cardinalby/git-get-release-action@v1
id: get_draft_release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
latest: true
draft: true
searchLimit: 1
- name: Publish Release (if it does not exist)
if: ${{ env.VERSION_HASH == '' }}
uses: irongut/EditRelease@v1.2.0
with:
token: ${{ secrets.GH_TOKEN }}
id: ${{ steps.get_draft_release.outputs.id }}
draft: false
prerelease: false
replacename: true
name: ${{ env.VERSION_TAG }}
replacebody: true
body: |
See [changelog](https://github.com/th-ch/youtube-music/blob/master/changelog.md#${{ env.CHANGELOG_ANCHOR }}) for the list of updates and the full diff.
Thanks to all contributors! 🏅
- name: Update changelog
if: ${{ env.VERSION_HASH == '' }}
run: |
pnpm changelog
- name: Commit changelog
if: ${{ env.VERSION_HASH == '' }}
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: Update changelog for ${{ env.VERSION_TAG }}
file_pattern: "changelog.md"
commit_user_name: CI
commit_user_email: th-ch@users.noreply.github.com

20
.github/workflows/dependency-review.yml vendored Normal file
View File

@ -0,0 +1,20 @@
# Dependency Review Action
#
# This Action will scan dependency manifest files that change as part of a Pull Reqest, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging.
#
# Source repository: https://github.com/actions/dependency-review-action
# Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement
name: "Dependency Review"
on: [ pull_request ]
permissions:
contents: read
jobs:
dependency-review:
runs-on: ubuntu-latest
steps:
- name: "Checkout Repository"
uses: actions/checkout@v4
- name: "Dependency Review"
uses: actions/dependency-review-action@v3

20
.github/workflows/winget-cla.yml vendored Normal file
View File

@ -0,0 +1,20 @@
name: Submit CLA to Winget PR
on:
workflow_dispatch:
inputs:
pr_url:
description: "Specific PR URL"
required: true
type: string
jobs:
comment:
name: Comment to PR
runs-on: ubuntu-latest
steps:
- name: Submit CLA to Windows Package Manager Community Repository Pull Request
run: gh pr comment $PR_URL --body "@microsoft-github-policy-service agree"
env:
GITHUB_TOKEN: ${{ secrets.WINGET_ACC_TOKEN }}
PR_URL: ${{ inputs.pr_url }}

26
.github/workflows/winget-submission.yml vendored Normal file
View File

@ -0,0 +1,26 @@
name: Submit to Windows Package Manager Community Repository
on:
release:
types: [ released ]
workflow_dispatch:
inputs:
tag_name:
description: "Specific tag name"
required: true
type: string
jobs:
winget:
name: Publish winget package
runs-on: ubuntu-latest
steps:
- name: Submit package to Windows Package Manager Community Repository
uses: vedantmgoyal2009/winget-releaser@v2
with:
identifier: th-ch.YouTubeMusic
installers-regex: '^YouTube-Music-Web-Setup-[\d\.]+\.exe$'
version: ${{ inputs.tag_name || github.event.release.tag_name }}
release-tag: ${{ inputs.tag_name || github.event.release.tag_name }}
token: ${{ secrets.WINGET_ACC_TOKEN }}
fork-user: youtube-music-winget

12
.gitignore vendored
View File

@ -1,4 +1,14 @@
node_modules
/dist
/assets/generated
/pack
electron-builder.yml
.vscode/settings.json
.idea
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

2
.npmrc Normal file
View File

@ -0,0 +1,2 @@
engine-strict=true
scripts-prepend-node-path=true

5
.prettierrc Normal file
View File

@ -0,0 +1,5 @@
{
"tabWidth": 2,
"useTabs": false,
"singleQuote": true
}

View File

@ -1,43 +0,0 @@
matrix:
include:
- os: osx
osx_image: xcode9.4
language: node_js
node_js: "10"
env:
- ELECTRON_CACHE=$HOME/.cache/electron
- ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
- os: linux
services: docker
language: generic
cache:
directories:
- node_modules
- $HOME/.cache/electron
- $HOME/.cache/electron-builder
script:
- |
if [ "$TRAVIS_OS_NAME" == "linux" ]; then
docker run --rm \
$(env | \
grep -Eo '^[^\s=]*(DEBUG|NODE_|ELECTRON_|YARN_|NPM_|CI|CIRCLE|TRAVIS|APPVEYOR_|CSC_|_TOKEN|_KEY|AWS_|STRIP|BUILD_)[^\s=]*' | \
sed '/^$/d;s/^/-e /' | \
paste -sd ' ' \
) \
-v ${PWD}:/project \
-v ~/.cache/electron:/root/.cache/electron \
-v ~/.cache/electron-builder:/root/.cache/electron-builder \
electronuserland/builder \
/bin/bash -c "npm install && npm run release:linux"
else
npm run release:mac
fi
before_cache:
- rm -rf $HOME/.cache/electron-builder
branches:
except:
- "/^v\\d+\\.\\d+\\.\\d+$/"

View File

@ -1,20 +0,0 @@
image: Visual Studio 2017
platform:
- x64
cache:
- node_modules
- '%USERPROFILE%\.electron'
init:
- git config --global core.autocrlf input
install:
- ps: Install-Product node 8 x64
- npm install
build_script:
- npm run release:win
test: off

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 931 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

6
assets/youtube-music.svg Normal file
View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 176 176" width="32" height="32">
<circle fill="red" cx="88" cy="88" r="88"/>
<path fill="#FFF"
d="M88 46c23.1 0 42 18.8 42 42s-18.8 42-42 42-42-18.8-42-42 18.9-42 42-42m0-4c-25.4 0-46 20.6-46 46s20.6 46 46 46 46-20.6 46-46-20.6-46-46-46z"/>
<path fill="#FFF" d="M72 111l39-24-39-22z"/>
</svg>

After

Width:  |  Height:  |  Size: 353 B

823
changelog.md Normal file
View File

@ -0,0 +1,823 @@
### Changelog
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
#### [v2.2.0](https://github.com/th-ch/youtube-music/compare/v2.1.3...v2.2.0)
- feat(ambient-mode): add config for `ambient-mode` plugin [`#1349`](https://github.com/th-ch/youtube-music/pull/1349)
- bump deps [`4248d20`](https://github.com/th-ch/youtube-music/commit/4248d20e8ef926ce7b1d07eb83743755a341d9f6)
- Update changelog for v2.1.3 [`dc73561`](https://github.com/th-ch/youtube-music/commit/dc73561c8a8acfc8ba91aff2dc78e4267869f2fd)
- Bump version to 2.2.0 [`6288d0b`](https://github.com/th-ch/youtube-music/commit/6288d0b171a65ea015922cdf3af6c7bd9a1f269b)
#### [v2.1.3](https://github.com/th-ch/youtube-music/compare/v2.1.2...v2.1.3)
> 23 October 2023
- fix: fixed bugs in downloader [`#1342`](https://github.com/th-ch/youtube-music/pull/1342)
- feat(discord): rename `Listen Along` to `Play on YTM` [`#1341`](https://github.com/th-ch/youtube-music/issues/1341)
- chore(deps): bump deps [`4333891`](https://github.com/th-ch/youtube-music/commit/4333891ccabe42aedf756fd48618be715db13262)
- Update changelog for v2.1.2 [`fa4c69d`](https://github.com/th-ch/youtube-music/commit/fa4c69d228d4e06a7858e2b22fcdfa075a8ca766)
- fix(store): fix listenAlong statement [`bceaa05`](https://github.com/th-ch/youtube-music/commit/bceaa05197d47a4a4bbd22e767d1e4d6ec277514)
#### [v2.1.2](https://github.com/th-ch/youtube-music/compare/v2.1.1...v2.1.2)
> 19 October 2023
- feat(in-app-menu): add an option to hide the window controls [`#1335`](https://github.com/th-ch/youtube-music/pull/1335)
- fix: fixed an issue where the album name was missing [`#1334`](https://github.com/th-ch/youtube-music/pull/1334)
- chore(deps): update dependency electron to v27.0.1 [`#1331`](https://github.com/th-ch/youtube-music/pull/1331)
- fix: fixed an issue where only the first 100 songs in a playlist were downloaded [`#1329`](https://github.com/th-ch/youtube-music/pull/1329)
- Updated readme plugins list [`#1326`](https://github.com/th-ch/youtube-music/pull/1326)
- QOL: Move source code under the src directory. [`#1318`](https://github.com/th-ch/youtube-music/pull/1318)
- feat: migrate from `npm` to `pnpm` [`#1316`](https://github.com/th-ch/youtube-music/pull/1316)
- fix: fix unresponsive (fix #1325) [`#1325`](https://github.com/th-ch/youtube-music/issues/1325)
- fix(blocker): remove the `app.isPackaged` check (fix #1315) [`#1315`](https://github.com/th-ch/youtube-music/issues/1315)
- fix(discord): `Discord RPC fails if a song's title is only one character` (fix #1314) [`#1314`](https://github.com/th-ch/youtube-music/issues/1314)
- chore(deps): Bump @rollup/plugin-commonjs, pnpm version, Remove ytpl [`9705f84`](https://github.com/th-ch/youtube-music/commit/9705f8489d7bf262bfd8b15ab84c2d3485f10eae)
- chore(deps): Bump rollup, @xhayper/discord-rpc version [`00a3e8d`](https://github.com/th-ch/youtube-music/commit/00a3e8d35ec335e1913be19f30ae09dbe0b7acdd)
- chore(deps): update dependency rollup to v4.1.4 [`6774d54`](https://github.com/th-ch/youtube-music/commit/6774d54f5eca432edc2e11743d9d1b1c2fda9ac8)
#### [v2.1.1](https://github.com/th-ch/youtube-music/compare/v2.1.0...v2.1.1)
> 14 October 2023
- hotfix(downloader): can't get an album title (fix #1313) [`#1313`](https://github.com/th-ch/youtube-music/issues/1313)
- Update changelog for v2.1.0 [`92cab89`](https://github.com/th-ch/youtube-music/commit/92cab89d17175741e60e65ea61633e23ebdc1f45)
- Bump version to 2.1.1 [`3bb5bc2`](https://github.com/th-ch/youtube-music/commit/3bb5bc2ca1856f4e222ee1e01e865f1ab804fdba)
- Add "about" menu to show app version [`21c45fa`](https://github.com/th-ch/youtube-music/commit/21c45faf2043cf72a7c14d5cf6c8d848d0448528)
#### [v2.1.0](https://github.com/th-ch/youtube-music/compare/v2.0.4...v2.1.0)
> 14 October 2023
- feat(downloader): Added support for audio format auto-detection [`#1310`](https://github.com/th-ch/youtube-music/pull/1310)
- feat(in-app-menu): enable in-app-menu by default (in Windows) [`#1311`](https://github.com/th-ch/youtube-music/pull/1311)
- fix: winget publish [`#1307`](https://github.com/th-ch/youtube-music/pull/1307)
- hotfix(downloader): fix invalid query selector (fix #1308) [`#1308`](https://github.com/th-ch/youtube-music/issues/1308)
- chore(deps): bump dependencies [`3c6b3ae`](https://github.com/th-ch/youtube-music/commit/3c6b3aeff0aae32adb2f2ad9c091b0a9701d3c24)
- chore(actions): create winget-cla.yml [`37181a7`](https://github.com/th-ch/youtube-music/commit/37181a7b5e2aa5bed6a36298eac3a66aac2762b8)
- Update changelog for v2.0.4 [`e9398ad`](https://github.com/th-ch/youtube-music/commit/e9398adac34a8abb11801e32999a915a8be0ece6)
#### [v2.0.4](https://github.com/th-ch/youtube-music/compare/v2.0.3...v2.0.4)
> 12 October 2023
- hotfix(adblocker): fix `ipcRenderer.sendSync() with ...` [`#1301`](https://github.com/th-ch/youtube-music/pull/1301)
- fix(downloader): Korean filename is broken on non-macOS devices [`#1297`](https://github.com/th-ch/youtube-music/pull/1297)
- chore(deps): bump deps [`b6894dc`](https://github.com/th-ch/youtube-music/commit/b6894dca2974c63fa2945d3a4995665d11eb2a78)
- fix: bump dependencies [`7aa970c`](https://github.com/th-ch/youtube-music/commit/7aa970cebc8e1407ff6937b402ba303e14c73efd)
- fix(downloader): private playlist download [`1d5b299`](https://github.com/th-ch/youtube-music/commit/1d5b2997bd0c72c1c007c57b145509e4a8f77fef)
#### [v2.0.3](https://github.com/th-ch/youtube-music/compare/v2.0.2...v2.0.3)
> 10 October 2023
- feat(discord): add `Hide GitHub link Button` [`#1293`](https://github.com/th-ch/youtube-music/pull/1293)
- feat(deps): bundle `youtubei.js` (temporary solution) [`#1292`](https://github.com/th-ch/youtube-music/pull/1292)
- fix(mpris): fixed an issue where MPRIS information was incorrect [`#1291`](https://github.com/th-ch/youtube-music/pull/1291)
- fix(discord): fixed an issue where `timeChanged` was not being applied to Discord activities [`#1290`](https://github.com/th-ch/youtube-music/pull/1290)
- Fix: typo in README [`#1286`](https://github.com/th-ch/youtube-music/pull/1286)
- fix: chore(deps): update dependency @jellybrick/mpris-service to 2.1.4 (fix #971) [`#971`](https://github.com/th-ch/youtube-music/issues/971)
- chore(deps): Bump `@cliqz/adblocker-electron` to 1.26.8 (fix #1269) [`#1269`](https://github.com/th-ch/youtube-music/issues/1269)
- fix: missing icons taskbar-mediacontrol [`fbf4b3b`](https://github.com/th-ch/youtube-music/commit/fbf4b3b8b5e39c61975e67efc990c45f62de76d8)
- remove: migration scripts [`52ba2dc`](https://github.com/th-ch/youtube-music/commit/52ba2dc9ffd8e235251d1279686f55e33b3fa3bb)
- feat: add migration script [`926b9fb`](https://github.com/th-ch/youtube-music/commit/926b9fb5e6db69b69935ec5d7be9a76a84e54ceb)
#### [v2.0.2](https://github.com/th-ch/youtube-music/compare/v2.0.1...v2.0.2)
> 8 October 2023
- fix: discord-rpc [`#1278`](https://github.com/th-ch/youtube-music/pull/1278)
- Bump version to 2.0.2 [`b5dbfaf`](https://github.com/th-ch/youtube-music/commit/b5dbfaf68691a546d72f5c1818fd3a44802eb0fa)
- Merge pull request #1272 from th-ch/feat/resolves-1265 [`6b7fd5b`](https://github.com/th-ch/youtube-music/commit/6b7fd5ba630888de08004105179c059c6d93e028)
- Merge pull request #1279 from th-ch/fix/1274 [`73a049a`](https://github.com/th-ch/youtube-music/commit/73a049a7bc5161f0d53c252cf510f1e2a6f6eeb3)
#### [v2.0.1](https://github.com/th-ch/youtube-music/compare/v2.0.0...v2.0.1)
> 8 October 2023
- Update changelog for v2.0.0 [`2d69dfd`](https://github.com/th-ch/youtube-music/commit/2d69dfd333c3223ecc7de13a0abc98fd99aa3a2b)
- hotfix: hotfix for #1267 [`c002263`](https://github.com/th-ch/youtube-music/commit/c002263c3bdd51890b8ffb431283afb60405d8fe)
- Bump version to 2.0.1 [`a1f025e`](https://github.com/th-ch/youtube-music/commit/a1f025e23c599fe5eb63b32ea38ee81200d232d6)
### [v2.0.0](https://github.com/th-ch/youtube-music/compare/v1.20.0...v2.0.0)
> 7 October 2023
- Bump version to 2.0.0 [`#1257`](https://github.com/th-ch/youtube-music/pull/1257)
- feat(GitHub): add issue template [`#1264`](https://github.com/th-ch/youtube-music/pull/1264)
- feat: I guess it's TypeScript [`#1235`](https://github.com/th-ch/youtube-music/pull/1235)
- chore(deps): update dependency rollup to v4 [`#44`](https://github.com/th-ch/youtube-music/pull/44)
- feat: apply rollup 🚀 [`#20`](https://github.com/th-ch/youtube-music/pull/20)
- fix: Fixes the video-toggle being displayed at the wrong position on fullscreen [`#1218`](https://github.com/th-ch/youtube-music/pull/1218)
- Change Winget Releaser job to `ubuntu-latest` [`#1225`](https://github.com/th-ch/youtube-music/pull/1225)
- Fixes the video-toggle being displayed at the wrong position on fullscreen [`#1218`](https://github.com/th-ch/youtube-music/pull/1218)
- Fix Remove upgrade button [`#1206`](https://github.com/th-ch/youtube-music/pull/1206)
- Fixed Age Restriction Bypass [`#1221`](https://github.com/th-ch/youtube-music/pull/1221)
- fix(tuna): handle `playPaused` [`#1`](https://github.com/th-ch/youtube-music/pull/1)
- Add plugin to always use the compact sidebar [`#1190`](https://github.com/th-ch/youtube-music/pull/1190)
- Hide login elements [`#1189`](https://github.com/th-ch/youtube-music/pull/1189)
- Fix navigation arrows [`#1191`](https://github.com/th-ch/youtube-music/pull/1191)
- MacOS better copy paste in readme.md [`#1156`](https://github.com/th-ch/youtube-music/pull/1156)
- feat(build-windows): Add support for IA32 (resolves #1110) [`#1110`](https://github.com/th-ch/youtube-music/issues/1110)
- fix: fix the downloader to work in a proxy environment (resolve #46) [`#46`](https://github.com/th-ch/youtube-music/issues/46)
- fix: fix #34 [`#34`](https://github.com/th-ch/youtube-music/issues/34)
- fix: fix #32 [`#32`](https://github.com/th-ch/youtube-music/issues/32)
- fix: fix #29 [`#29`](https://github.com/th-ch/youtube-music/issues/29)
- fix: fix #30 [`#30`](https://github.com/th-ch/youtube-music/issues/30)
- fix: fix #29 [`#29`](https://github.com/th-ch/youtube-music/issues/29)
- fix: fix #30 [`#30`](https://github.com/th-ch/youtube-music/issues/30)
- hotfix: fix #28 [`#28`](https://github.com/th-ch/youtube-music/issues/28)
- fix: resolve #12 [`#12`](https://github.com/th-ch/youtube-music/issues/12)
- fix(precise-volume): fix slider ui does not sync [`#15`](https://github.com/th-ch/youtube-music/issues/15)
- fix(video-toggle): fix video config not load config [`#16`](https://github.com/th-ch/youtube-music/issues/16)
- refactor(in-app-menu): refactor in-app-menu plugin [`#13`](https://github.com/th-ch/youtube-music/issues/13)
- feat(disable-autoplay): add `apply once`, resolve #9 [`#9`](https://github.com/th-ch/youtube-music/issues/9)
- fix: fix #4 [`#4`](https://github.com/th-ch/youtube-music/issues/4)
- fix: fix #7 [`#7`](https://github.com/th-ch/youtube-music/issues/7)
- fix: fix #1187 [`#1187`](https://github.com/th-ch/youtube-music/issues/1187)
- fix: resolves #978 [`#978`](https://github.com/th-ch/youtube-music/issues/978)
- fix: resolves #958 [`#958`](https://github.com/th-ch/youtube-music/issues/958)
- Merge pull request #1259 from organization/feat/fork-to-main [`457a8b5`](https://github.com/th-ch/youtube-music/commit/457a8b5018695d82b043cb7fa7264fbcf43f996c)
- fix: remove `xo`, migration to `eslint` [`c722896`](https://github.com/th-ch/youtube-music/commit/c722896a73cfbca3bbbab67bfcdfa639474e9030)
- fix: rollback changelog [`9048da2`](https://github.com/th-ch/youtube-music/commit/9048da22f98b9091ab606464a6cbdaad8bc185ae)
#### [v1.20.0](https://github.com/th-ch/youtube-music/compare/v1.19.0...v1.20.0)
> 18 May 2023
- Bump version to 1.20.0 [`#1117`](https://github.com/th-ch/youtube-music/pull/1117)
- Multiple implementations for the Adblocker plugin [`#1134`](https://github.com/th-ch/youtube-music/pull/1134)
- add xesam:url mpris from songInfo.url [`#1138`](https://github.com/th-ch/youtube-music/pull/1138)
- revert adblocker bump [`#1124`](https://github.com/th-ch/youtube-music/pull/1124)
- fix security issues in dependencies [`#1116`](https://github.com/th-ch/youtube-music/pull/1116)
- commit assets/generated [`#1118`](https://github.com/th-ch/youtube-music/pull/1118)
- remove `electron.remote` dependency [`#1113`](https://github.com/th-ch/youtube-music/pull/1113)
- .gitattributes set `eol=lf` on *all* files [`#1115`](https://github.com/th-ch/youtube-music/pull/1115)
- [crossfade] add `[beta]` tag to warn of possible bugs [`#1096`](https://github.com/th-ch/youtube-music/pull/1096)
- [crossfade] add menu options [`#1065`](https://github.com/th-ch/youtube-music/pull/1065)
- [captions-selector] add `autoload` option [`#1079`](https://github.com/th-ch/youtube-music/pull/1079)
- [downloader] Cleanup metadata [`#1091`](https://github.com/th-ch/youtube-music/pull/1091)
- fix protocol handler on unix [`#1099`](https://github.com/th-ch/youtube-music/pull/1099)
- fix merge conflict mistake in #1032 [`#1090`](https://github.com/th-ch/youtube-music/pull/1090)
- Create providers/decorators.js [`#1068`](https://github.com/th-ch/youtube-music/pull/1068)
- [adblocker] fix ads showing on program start [`#1100`](https://github.com/th-ch/youtube-music/pull/1100)
- Allow downloading age restricted videos [`#1086`](https://github.com/th-ch/youtube-music/pull/1086)
- add starting page option [`#1073`](https://github.com/th-ch/youtube-music/pull/1073)
- [downloader] plugin overhaul [`#1054`](https://github.com/th-ch/youtube-music/pull/1054)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.25.2 to 1.26.0 [`#1070`](https://github.com/th-ch/youtube-music/pull/1070)
- [in-app-menu] fix css style of the library of uploaded songs [`#1072`](https://github.com/th-ch/youtube-music/pull/1072)
- add option to hide the like buttons [`#1077`](https://github.com/th-ch/youtube-music/pull/1077)
- Nitpick: Fix name casing in tray icon tooltip [`#1081`](https://github.com/th-ch/youtube-music/pull/1081)
- [lyrics-genius] Improved reliability of east asian language detection #1080 [`#1082`](https://github.com/th-ch/youtube-music/pull/1082)
- Add dynamic synced plugin config provider [`#1064`](https://github.com/th-ch/youtube-music/pull/1064)
- [captions-selector] fix button showing when there aren't any captions available [`#1063`](https://github.com/th-ch/youtube-music/pull/1063)
- [in-app-menu] fix items hidden by navbar in library [`#1067`](https://github.com/th-ch/youtube-music/pull/1067)
- Fix Youtube Music logo is draggable [`#1061`](https://github.com/th-ch/youtube-music/pull/1061)
- fix build action failing on forks, and run it on pull requests [`#1069`](https://github.com/th-ch/youtube-music/pull/1069)
- try to fix songInfo time&album [`#1032`](https://github.com/th-ch/youtube-music/pull/1032)
- [lyrics] Romanization toggle for Genius plugin [`#1039`](https://github.com/th-ch/youtube-music/pull/1039)
- [Snyk] Upgrade html-to-text from 9.0.3 to 9.0.4 [`#1056`](https://github.com/th-ch/youtube-music/pull/1056)
- [in-app-menu] add toggle menu icon [`#988`](https://github.com/th-ch/youtube-music/pull/988)
- Fix playback speed slider not showing and PiP button showing when it shouldn't [`#1048`](https://github.com/th-ch/youtube-music/pull/1048)
- [lyrics-genius] Fix lyrics not showing up or showing up when they shouldn't [`#1052`](https://github.com/th-ch/youtube-music/pull/1052)
- [in-app-menu] disable nav-bar drag when menu is open [`#1055`](https://github.com/th-ch/youtube-music/pull/1055)
- [Notifications] [Windows] Native interactive notifications [`#946`](https://github.com/th-ch/youtube-music/pull/946)
- automate winget releases [`#1049`](https://github.com/th-ch/youtube-music/pull/1049)
- build win target on ARM [`#1029`](https://github.com/th-ch/youtube-music/pull/1029)
- feat: auto reconnect rpc and CSP fix [`#961`](https://github.com/th-ch/youtube-music/pull/961)
- [in-app-menu] make navbar draggable [`#989`](https://github.com/th-ch/youtube-music/pull/989)
- Add option `useNativePiP` in PiP plugin to use native PiP [`#1013`](https://github.com/th-ch/youtube-music/pull/1013)
- [PiP] fix hotkey activating when typing in the search box [`#1025`](https://github.com/th-ch/youtube-music/pull/1025)
- [PiP] Remove titlebar when in-app-menu is enabled [`#1024`](https://github.com/th-ch/youtube-music/pull/1024)
- [Shortcuts] MPRIS fixes, Repeat Language bug fix [`#1005`](https://github.com/th-ch/youtube-music/pull/1005)
- Build without release in forks [`#1023`](https://github.com/th-ch/youtube-music/pull/1023)
- [in-app-menu] fix navbar position [`#997`](https://github.com/th-ch/youtube-music/pull/997)
- Migrate to yarn v3 [`#1022`](https://github.com/th-ch/youtube-music/pull/1022)
- [precise-volume] fix arrows shortcuts active in search box [`#1002`](https://github.com/th-ch/youtube-music/pull/1002)
- [new plugin] Add first version for crossfade plugin [`#1012`](https://github.com/th-ch/youtube-music/pull/1012)
- Fix bypass-age-restriction lib import [`#984`](https://github.com/th-ch/youtube-music/pull/984)
- Add menu entry to copy current URL [`#977`](https://github.com/th-ch/youtube-music/pull/977)
- Remove deprecated code [`#979`](https://github.com/th-ch/youtube-music/pull/979)
- Update dev dependencies [`#976`](https://github.com/th-ch/youtube-music/pull/976)
- Update electron and various dependencies [`#974`](https://github.com/th-ch/youtube-music/pull/974)
- Add CI job for dependency review [`#973`](https://github.com/th-ch/youtube-music/pull/973)
- Improve captions plugin [`#972`](https://github.com/th-ch/youtube-music/pull/972)
- fix malformed json in tuna-obs [`#817`](https://github.com/th-ch/youtube-music/pull/817)
- Add Captions selector [`#866`](https://github.com/th-ch/youtube-music/pull/866)
- fix SnoreToast implementation [`#941`](https://github.com/th-ch/youtube-music/pull/941)
- Bump json5 from 1.0.1 to 1.0.2 [`#942`](https://github.com/th-ch/youtube-music/pull/942)
- [Snyk] Upgrade custom-electron-titlebar from 4.1.3 to 4.1.5 [`#969`](https://github.com/th-ch/youtube-music/pull/969)
- Fixed video-toggle aligning running before #main-panel exists [`#956`](https://github.com/th-ch/youtube-music/pull/956)
- [New plugin] Music visualizers [`#953`](https://github.com/th-ch/youtube-music/pull/953)
- fix PiP buttons not showing up [`#964`](https://github.com/th-ch/youtube-music/pull/964)
- Use same audio context/source everywhere [`#951`](https://github.com/th-ch/youtube-music/pull/951)
- revert adblocker bump [`#1105`](https://github.com/th-ch/youtube-music/issues/1105)
- Allow downloading age restricted videos [`#1084`](https://github.com/th-ch/youtube-music/issues/1084)
- add option to hide the like buttons [`#1075`](https://github.com/th-ch/youtube-music/issues/1075)
- add starting page option [`#1071`](https://github.com/th-ch/youtube-music/issues/1071)
- add slight delay to lyrics genius [`#1041`](https://github.com/th-ch/youtube-music/issues/1041)
- fix unescaped url params [`#1050`](https://github.com/th-ch/youtube-music/issues/1050)
- fix playback speed selector [`#1045`](https://github.com/th-ch/youtube-music/issues/1045)
- fix PiP button [`#959`](https://github.com/th-ch/youtube-music/issues/959)
- fix security issues in deps [`9cde19d`](https://github.com/th-ch/youtube-music/commit/9cde19d906081fe1851f90fa44581b2b74c328e3)
- rome lint [`325026e`](https://github.com/th-ch/youtube-music/commit/325026e3eae3daed33a6d66d1ef9f898d6805b28)
- lint [`b652a01`](https://github.com/th-ch/youtube-music/commit/b652a011a5a08978db6660aeca6908c47a7cf07a)
#### [v1.19.0](https://github.com/th-ch/youtube-music/compare/v1.18.0...v1.19.0)
> 31 December 2022
- Automatic release by CI when version is updated [`#936`](https://github.com/th-ch/youtube-music/pull/936)
- Center toggle of video-toggle [`#894`](https://github.com/th-ch/youtube-music/pull/894)
- Load plugins as soon as the window is created [`#890`](https://github.com/th-ch/youtube-music/pull/890)
- Bump qs from 6.5.2 to 6.5.3 [`#913`](https://github.com/th-ch/youtube-music/pull/913)
- [Snyk] Upgrade custom-electron-titlebar from 4.1.1 to 4.1.2 [`#900`](https://github.com/th-ch/youtube-music/pull/900)
- Add option in skip-silences plugin to only skip at the beginning [`#931`](https://github.com/th-ch/youtube-music/pull/931)
- Replace rimraf by del-cli [`#932`](https://github.com/th-ch/youtube-music/pull/932)
- docs: Added winget install instructions [`#873`](https://github.com/th-ch/youtube-music/pull/873)
- [Snyk] Upgrade async-mutex from 0.3.2 to 0.4.0 [`#855`](https://github.com/th-ch/youtube-music/pull/855)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.25.0 to 1.25.1 [`#856`](https://github.com/th-ch/youtube-music/pull/856)
- [Snyk] Upgrade custom-electron-titlebar from 4.1.0 to 4.1.1 [`#865`](https://github.com/th-ch/youtube-music/pull/865)
- [Snyk] Upgrade @ffmpeg/ffmpeg from 0.11.5 to 0.11.6 [`#876`](https://github.com/th-ch/youtube-music/pull/876)
- Discord Plugin RPC Fix [`#888`](https://github.com/th-ch/youtube-music/pull/888)
- Bump FFMpeg [`#854`](https://github.com/th-ch/youtube-music/pull/854)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.23.8 to 1.23.9 [`#823`](https://github.com/th-ch/youtube-music/pull/823)
- [Snyk] Upgrade electron-store from 8.0.2 to 8.1.0 [`#801`](https://github.com/th-ch/youtube-music/pull/801)
- proposal: Adding an option to hide duration before the song ends [`#802`](https://github.com/th-ch/youtube-music/pull/802)
- [Snyk] Security upgrade node-fetch from 2.6.7 to 3.2.10 [`#790`](https://github.com/th-ch/youtube-music/pull/790)
- Update README.md with a new theme repo [`#807`](https://github.com/th-ch/youtube-music/pull/807)
- Fix likes on touchbar (they were inverted) [`#822`](https://github.com/th-ch/youtube-music/pull/822)
- Add Scoop install directions for Windows 🪟 [`#839`](https://github.com/th-ch/youtube-music/pull/839)
- Bump version and change release type when publishing a new version [`31ab27c`](https://github.com/th-ch/youtube-music/commit/31ab27c39ff6319116a6514d952eed1f02dd45fd)
- Lock node-fetch to v2 for commonJS [`c9f610f`](https://github.com/th-ch/youtube-music/commit/c9f610f7fcfcce1317338364045ab0e1bf4249a4)
- fix: upgrade @cliqz/adblocker-electron from 1.25.0 to 1.25.1 [`762ef4e`](https://github.com/th-ch/youtube-music/commit/762ef4eede29b53aae912b3b50a1ca53f6765c53)
#### [v1.18.0](https://github.com/th-ch/youtube-music/compare/v1.17.0...v1.18.0)
> 5 September 2022
- Bump ytdl-core (bug fix) [`#816`](https://github.com/th-ch/youtube-music/pull/816)
- Bump electron and fix tests in CI [`#813`](https://github.com/th-ch/youtube-music/pull/813)
- Allow user to pass custom CSS file [`#800`](https://github.com/th-ch/youtube-music/pull/800)
- [Snyk] Upgrade html-to-text from 8.2.0 to 8.2.1 [`#799`](https://github.com/th-ch/youtube-music/pull/799)
- [Snyk] Upgrade electron-store from 8.0.1 to 8.0.2 [`#772`](https://github.com/th-ch/youtube-music/pull/772)
- Bump jpeg-js from 0.4.3 to 0.4.4 [`#756`](https://github.com/th-ch/youtube-music/pull/756)
- Support MPRIS loop and volume change [`#749`](https://github.com/th-ch/youtube-music/pull/749)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.23.7 to 1.23.8 [`#742`](https://github.com/th-ch/youtube-music/pull/742)
- Use ; instead of space for play/pause. [`#745`](https://github.com/th-ch/youtube-music/pull/745)
- Update readme.md [`#750`](https://github.com/th-ch/youtube-music/pull/750)
- fix lyrics font size [`#753`](https://github.com/th-ch/youtube-music/pull/753)
- fix top gap between nav-bar and browse-page [`#734`](https://github.com/th-ch/youtube-music/pull/734)
- migrate from remote to ipc + fix restart in portable app [`#605`](https://github.com/th-ch/youtube-music/pull/605)
- [Snyk] Upgrade custom-electron-prompt from 1.4.2 to 1.5.0 [`#717`](https://github.com/th-ch/youtube-music/pull/717)
- Picture in Picture v2 [`#685`](https://github.com/th-ch/youtube-music/pull/685)
- Add MPRIS volume control [`#776`](https://github.com/th-ch/youtube-music/issues/776)
- Remove jest [`bb6115f`](https://github.com/th-ch/youtube-music/commit/bb6115fec1a18a416edb365a442eb0b0ee330768)
- migrate from remote to ipc [`5bd9768`](https://github.com/th-ch/youtube-music/commit/5bd97685b9e07c656e0b57a9e02819afc70af1b1)
- v3 [`d23bfe9`](https://github.com/th-ch/youtube-music/commit/d23bfe936840b947ca101fd304464f65d36e88cc)
#### [v1.17.0](https://github.com/th-ch/youtube-music/compare/v1.16.0...v1.17.0)
> 16 May 2022
- Bump ejs from 3.1.6 to 3.1.7 [`#712`](https://github.com/th-ch/youtube-music/pull/712)
- fix injectCSS `did-finish-load` listener overload [`#693`](https://github.com/th-ch/youtube-music/pull/693)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.23.6 to 1.23.7 [`#689`](https://github.com/th-ch/youtube-music/pull/689)
- [Snyk] Upgrade custom-electron-prompt from 1.4.1 to 1.4.2 [`#686`](https://github.com/th-ch/youtube-music/pull/686)
- [Snyk] Upgrade @electron/remote from 2.0.7 to 2.0.8 [`#684`](https://github.com/th-ch/youtube-music/pull/684)
- Improve plugin submenu ux [`#699`](https://github.com/th-ch/youtube-music/pull/699)
- update build action [`#702`](https://github.com/th-ch/youtube-music/pull/702)
- add different modes to video-toggle plugin [`#700`](https://github.com/th-ch/youtube-music/pull/700)
- lint [`#701`](https://github.com/th-ch/youtube-music/pull/701)
- [ImgBot] Optimize images [`#703`](https://github.com/th-ch/youtube-music/pull/703)
- add album to lastfm if available [`#695`](https://github.com/th-ch/youtube-music/pull/695)
- [in-app-menu] add hide icon option [`#680`](https://github.com/th-ch/youtube-music/pull/680)
- Add plugin to bypass age restrictions [`#682`](https://github.com/th-ch/youtube-music/pull/682)
- Add "Picture in picture" plugin [`#674`](https://github.com/th-ch/youtube-music/pull/674)
- Set lyrics metadata from Genius [`#679`](https://github.com/th-ch/youtube-music/pull/679)
- MacOS: bring back the app in dock when using tray + app hidden [`#677`](https://github.com/th-ch/youtube-music/pull/677)
- [Snyk] Upgrade @electron/remote from 2.0.4 to 2.0.5 [`#644`](https://github.com/th-ch/youtube-music/pull/644)
- [Snyk] Upgrade ytpl from 2.2.3 to 2.3.0 [`#660`](https://github.com/th-ch/youtube-music/pull/660)
- [Snyk] Upgrade ytdl-core from 4.10.1 to 4.11.0 [`#659`](https://github.com/th-ch/youtube-music/pull/659)
- Bump plist from 3.0.2 to 3.0.5 [`#678`](https://github.com/th-ch/youtube-music/pull/678)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.23.4 to 1.23.5 [`#624`](https://github.com/th-ch/youtube-music/pull/624)
- [Precise-Volume] fix volumeHud position in miniplayer [`#645`](https://github.com/th-ch/youtube-music/pull/645)
- add always-on-top option [`#655`](https://github.com/th-ch/youtube-music/pull/655)
- [precise-volume] fix expand-volume-slider not updating its value [`#670`](https://github.com/th-ch/youtube-music/pull/670)
- Fix lyrics genius missing parts [`#671`](https://github.com/th-ch/youtube-music/pull/671)
- feat: option to force show like buttons [`#673`](https://github.com/th-ch/youtube-music/pull/673)
- fix custom titlebar in prompt options [`#619`](https://github.com/th-ch/youtube-music/pull/619)
- Process lyrics HTML in Genius util [`d0532d6`](https://github.com/th-ch/youtube-music/commit/d0532d691e56f955ef0b41f5fe2efe6295dddf9e)
- Create first version of picture in picture plugin [`d2265b5`](https://github.com/th-ch/youtube-music/commit/d2265b59d78143cf51fe4dc3d5dee9da66873cc1)
- Bump electron-builder to fix Mac build script [`ae8365f`](https://github.com/th-ch/youtube-music/commit/ae8365f721eafda6c502d02eee86d098f2b9e2a1)
#### [v1.16.0](https://github.com/th-ch/youtube-music/compare/v1.15.0...v1.16.0)
> 20 February 2022
- update in-app-menu [`#596`](https://github.com/th-ch/youtube-music/pull/596)
- Fix clientID [`#602`](https://github.com/th-ch/youtube-music/pull/602)
- Add snoretoast custom compile script [`#600`](https://github.com/th-ch/youtube-music/pull/600)
- fix interactive notifications icon + exclude platform specific plugins from build [`#591`](https://github.com/th-ch/youtube-music/pull/591)
- Add album title to largeImage and change paused icon [`#587`](https://github.com/th-ch/youtube-music/pull/587)
- make useragent override optional [`#595`](https://github.com/th-ch/youtube-music/pull/595)
- get album name from DOM [`#588`](https://github.com/th-ch/youtube-music/pull/588)
- fix various lyrics issues [`#584`](https://github.com/th-ch/youtube-music/pull/584)
- discord set inactivity timeout prompt [`#580`](https://github.com/th-ch/youtube-music/pull/580)
- add single instance lock option [`#578`](https://github.com/th-ch/youtube-music/pull/578)
- fix "restart app on config change" option [`#561`](https://github.com/th-ch/youtube-music/pull/561)
- fix window position save spam [`#562`](https://github.com/th-ch/youtube-music/pull/562)
- load adblocker sooner [`#583`](https://github.com/th-ch/youtube-music/pull/583)
- add description of new plugins to readme [`#585`](https://github.com/th-ch/youtube-music/pull/585)
- Use `center` alignment for lyrics text [`#573`](https://github.com/th-ch/youtube-music/pull/573)
- fix precise-volume hud positioning [`#567`](https://github.com/th-ch/youtube-music/pull/567)
- update electron and dependencies [`#565`](https://github.com/th-ch/youtube-music/pull/565)
- filenamify playlist folder name [`#557`](https://github.com/th-ch/youtube-music/pull/557)
- [Snyk] Security upgrade node-fetch from 2.6.6 to 2.6.7 (3.1.1 incompatible) [`#554`](https://github.com/th-ch/youtube-music/pull/554)
- fix app starting offscreen [`#548`](https://github.com/th-ch/youtube-music/pull/548)
- Release Mac arm64 [`#566`](https://github.com/th-ch/youtube-music/pull/566)
- Build command for Apple (m1) silicon macs [`#553`](https://github.com/th-ch/youtube-music/pull/553)
- [Snyk] Upgrade custom-electron-titlebar from 3.2.9 to 3.2.10 [`#545`](https://github.com/th-ch/youtube-music/pull/545)
- Fix duplicate media session on linux [`#551`](https://github.com/th-ch/youtube-music/pull/551)
- show a badge remaining items when downloading a playlist [`#550`](https://github.com/th-ch/youtube-music/pull/550)
- allow downloading playlists from popup menu [`#549`](https://github.com/th-ch/youtube-music/pull/549)
- xesam:artist should be a list [`#539`](https://github.com/th-ch/youtube-music/pull/539)
- fix notifications showing thumbnail of last song [`#537`](https://github.com/th-ch/youtube-music/pull/537)
- Fix https://github.com/th-ch/youtube-music/pull/578#issuecomment-1035517531 [`#578`](https://github.com/th-ch/youtube-music/pull/578)
- Add automatic changelog [`1d9bfe8`](https://github.com/th-ch/youtube-music/commit/1d9bfe8ac8869cde648164979986964baa52c2f9)
- update electron to v17.0.0 [`fef7115`](https://github.com/th-ch/youtube-music/commit/fef711549fa9862f8ea23301edde747c5802e352)
- update dependencies [`8be07bc`](https://github.com/th-ch/youtube-music/commit/8be07bcb7ad8b727d97c36aa0760aed4e2fc481f)
#### [v1.15.0](https://github.com/th-ch/youtube-music/compare/v1.14.0...v1.15.0)
> 30 December 2021
- Switch from spectron to playwright to fix tests [`#531`](https://github.com/th-ch/youtube-music/pull/531)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.23.0 to 1.23.1 [`#529`](https://github.com/th-ch/youtube-music/pull/529)
- fix precise-volume options sync [`#525`](https://github.com/th-ch/youtube-music/pull/525)
- Add album art/thumbnail to discord activity [`#524`](https://github.com/th-ch/youtube-music/pull/524)
- fix skip-silences plugin [`#521`](https://github.com/th-ch/youtube-music/pull/521)
- [Snyk] Upgrade electron-updater from 4.6.2 to 4.6.3 [`#520`](https://github.com/th-ch/youtube-music/pull/520)
- update electron & remote & user agents [`#515`](https://github.com/th-ch/youtube-music/pull/515)
- fixes mpris bug in snap [`#513`](https://github.com/th-ch/youtube-music/pull/513)
- Add "Skip silences" plugin [`#519`](https://github.com/th-ch/youtube-music/pull/519)
- Aligned lyric design [`#510`](https://github.com/th-ch/youtube-music/pull/510)
- Fix mpris bugs - follows #480 [`#509`](https://github.com/th-ch/youtube-music/pull/509)
- Various small fixes (discord, video-toggle, precise-volume, playback-speed, shortcuts, lyrics) [`#476`](https://github.com/th-ch/youtube-music/pull/476)
- Mpris + obs-tuna fixes [`#480`](https://github.com/th-ch/youtube-music/pull/480)
- [Snyk] Upgrade node-fetch from 2.6.5 to 2.6.6 [`#498`](https://github.com/th-ch/youtube-music/pull/498)
- fix interaction between blur navbar & in-app-menu [`#491`](https://github.com/th-ch/youtube-music/pull/491)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.22.7 to 1.23.0 [`#475`](https://github.com/th-ch/youtube-music/pull/475)
- New Plugin: Exponential Volume [`#488`](https://github.com/th-ch/youtube-music/pull/488)
- [Snyk] Upgrade electron-updater from 4.6.0 to 4.6.1 [`#474`](https://github.com/th-ch/youtube-music/pull/474)
- Fix loadeddata/metadata video events rarely not firing (+other small fixes) [`#477`](https://github.com/th-ch/youtube-music/pull/477)
- fix #490 [`#490`](https://github.com/th-ch/youtube-music/issues/490)
- fix #472 [`#472`](https://github.com/th-ch/youtube-music/issues/472)
- fix mpris [`ccfe743`](https://github.com/th-ch/youtube-music/commit/ccfe7434bf708ee58156c2952234a049706edfc2)
- lint [`4362101`](https://github.com/th-ch/youtube-music/commit/4362101c0a2ebb7f0536f615cecba8a55ac96702)
- rework songInfo pause listener [`6726e26`](https://github.com/th-ch/youtube-music/commit/6726e2600b3ca3a8d68e3e1b95b50da211fa354d)
#### [v1.14.0](https://github.com/th-ch/youtube-music/compare/v1.13.0...v1.14.0)
> 7 November 2021
- [Snyk] Upgrade custom-electron-prompt from 1.1.0 to 1.2.0 [`#467`](https://github.com/th-ch/youtube-music/pull/467)
- Video Toggle Plugin [`#448`](https://github.com/th-ch/youtube-music/pull/448)
- fix playback speed plugin [`#462`](https://github.com/th-ch/youtube-music/pull/462)
- Fix sponsorblock skipping when not needed [`#465`](https://github.com/th-ch/youtube-music/pull/465)
- Sponsorblock fix + use new apiLoaded event [`#463`](https://github.com/th-ch/youtube-music/pull/463)
- use apiLoaded event in audio-compressor plugin [`#458`](https://github.com/th-ch/youtube-music/pull/458)
- alert on initial hide-menu enabled [`#456`](https://github.com/th-ch/youtube-music/pull/456)
- Blur plugin tweaks and integration with in-app-menu [`#451`](https://github.com/th-ch/youtube-music/pull/451)
- set resume on start url to songInfo.url [`#449`](https://github.com/th-ch/youtube-music/pull/449)
- quality-changer-plugin [`#446`](https://github.com/th-ch/youtube-music/pull/446)
- get songInfo from youtube API [`#443`](https://github.com/th-ch/youtube-music/pull/443)
- New plugin: Blur navigation bar [`#442`](https://github.com/th-ch/youtube-music/pull/442)
- Discord plugin: Clean Up Export (follow-up #380) [`#440`](https://github.com/th-ch/youtube-music/pull/440)
- remove upgrade button + makes images unselectable [`#434`](https://github.com/th-ch/youtube-music/pull/434)
- new auto confirm when paused [`#433`](https://github.com/th-ch/youtube-music/pull/433)
- fix: mpris instance not registering itself and media controls [`#431`](https://github.com/th-ch/youtube-music/pull/431)
- Audio compressor plugin [`#288`](https://github.com/th-ch/youtube-music/pull/288)
- precise-volume plugin fixes & updates [`#275`](https://github.com/th-ch/youtube-music/pull/275)
- Custom Prompt for changing options [`#243`](https://github.com/th-ch/youtube-music/pull/243)
- [Snyk] Upgrade async-mutex from 0.3.1 to 0.3.2 [`#412`](https://github.com/th-ch/youtube-music/pull/412)
- build(deps): bump tmpl from 1.0.4 to 1.0.5 [`#414`](https://github.com/th-ch/youtube-music/pull/414)
- [Snyk] Upgrade node-fetch from 2.6.1 to 2.6.2 [`#416`](https://github.com/th-ch/youtube-music/pull/416)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.22.5 to 1.22.6 [`#429`](https://github.com/th-ch/youtube-music/pull/429)
- build(deps-dev): bump electron from 12.0.8 to 12.1.0 [`#430`](https://github.com/th-ch/youtube-music/pull/430)
- Fix discord clearActivity, menu, listen along option [`#380`](https://github.com/th-ch/youtube-music/pull/380)
- Bump dev deps [`41a01ba`](https://github.com/th-ch/youtube-music/commit/41a01ba58a17056ba5143fdbd10d3bae11dd8d52)
- Discord add reconnecting functionality [`b5fd6b4`](https://github.com/th-ch/youtube-music/commit/b5fd6b4969a318b3738583e7f33eb2c0cf295237)
- add custom-electron-prompt [`e4eed2e`](https://github.com/th-ch/youtube-music/commit/e4eed2e51979378e62dab902e425218cae5108dc)
#### [v1.13.0](https://github.com/th-ch/youtube-music/compare/v1.12.2...v1.13.0)
> 19 September 2021
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.22.4 to 1.22.5 [`#406`](https://github.com/th-ch/youtube-music/pull/406)
- Fix incorrect Google alert caused by changing user agent coresponding to current platform [`#384`](https://github.com/th-ch/youtube-music/pull/384)
- [Snyk] Upgrade electron-updater from 4.4.3 to 4.4.6 [`#401`](https://github.com/th-ch/youtube-music/pull/401)
- [Snyk] Upgrade electron-updater from 4.4.0 to 4.4.1 [`#370`](https://github.com/th-ch/youtube-music/pull/370)
- Bump path-parse from 1.0.6 to 1.0.7 [`#375`](https://github.com/th-ch/youtube-music/pull/375)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.22.2 to 1.22.3 [`#385`](https://github.com/th-ch/youtube-music/pull/385)
- Bump jszip from 3.5.0 to 3.7.1 [`#388`](https://github.com/th-ch/youtube-music/pull/388)
- List missing plugins [`#382`](https://github.com/th-ch/youtube-music/pull/382)
- add tuna plugin for obs [`#397`](https://github.com/th-ch/youtube-music/pull/397)
- Update menu buttons to new format [`#389`](https://github.com/th-ch/youtube-music/pull/389)
- Plugin to fetch lyrics from Genius [`#387`](https://github.com/th-ch/youtube-music/pull/387)
- Add mpris support with cherry picked commit from previous PR https://github.com/th-ch/youtube-music/pull/394 [`#395`](https://github.com/th-ch/youtube-music/pull/395)
- Add "Listen Along" button, solve #353 [`#383`](https://github.com/th-ch/youtube-music/pull/383)
- Bump node to v14 [`#386`](https://github.com/th-ch/youtube-music/pull/386)
- [Snyk] Upgrade electron-updater from 4.3.9 to 4.3.10 [`#350`](https://github.com/th-ch/youtube-music/pull/350)
- [Snyk] Upgrade chokidar from 3.5.1 to 3.5.2 [`#354`](https://github.com/th-ch/youtube-music/pull/354)
- Bump ytdl/ytpl [`c01506d`](https://github.com/th-ch/youtube-music/commit/c01506dc441bfc538471dc2c552c1a8a2800c611)
- Add mpris support [`e255777`](https://github.com/th-ch/youtube-music/commit/e255777283c7b16611404cbfe260bfcca75a1e40)
- Add Genius lyrics plugin [`acbe0ac`](https://github.com/th-ch/youtube-music/commit/acbe0ac25d568c25fedb514e0e96c66497b0f2d6)
#### [v1.12.2](https://github.com/th-ch/youtube-music/compare/v1.12.1...v1.12.2)
> 1 July 2021
- Fix downloader plugin [`#339`](https://github.com/th-ch/youtube-music/pull/339)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.22.0 to 1.22.1 [`#337`](https://github.com/th-ch/youtube-music/pull/337)
- Update and simplify in-app-menu [`#249`](https://github.com/th-ch/youtube-music/pull/249)
- Bump hosted-git-info from 2.8.8 to 2.8.9 [`#331`](https://github.com/th-ch/youtube-music/pull/331)
- Bump lodash from 4.17.20 to 4.17.21 [`#330`](https://github.com/th-ch/youtube-music/pull/330)
- [Snyk] Upgrade ytdl-core from 4.8.0 to 4.8.2 [`#328`](https://github.com/th-ch/youtube-music/pull/328)
- [Snyk] Upgrade electron-updater from 4.3.8 to 4.3.9 [`#324`](https://github.com/th-ch/youtube-music/pull/324)
- Bump normalize-url from 4.5.0 to 4.5.1 [`#323`](https://github.com/th-ch/youtube-music/pull/323)
- Bump trim-newlines from 3.0.0 to 3.0.1 [`#320`](https://github.com/th-ch/youtube-music/pull/320)
- [Snyk] Upgrade @ffmpeg/core from 0.9.0 to 0.10.0 [`#317`](https://github.com/th-ch/youtube-music/pull/317)
- [Snyk] Upgrade @ffmpeg/ffmpeg from 0.9.8 to 0.10.0 [`#316`](https://github.com/th-ch/youtube-music/pull/316)
- [Snyk] Upgrade custom-electron-titlebar from 3.2.6 to 3.2.7 [`#311`](https://github.com/th-ch/youtube-music/pull/311)
- fix hidden webp thumbnail throwing MIME type error in downloader [`#318`](https://github.com/th-ch/youtube-music/pull/318)
- Add Sponsorblock plugin [`#308`](https://github.com/th-ch/youtube-music/pull/308)
- [Snyk] Upgrade @ffmpeg/ffmpeg from 0.9.7 to 0.9.8 [`#305`](https://github.com/th-ch/youtube-music/pull/305)
- Bump dependencies to fix vulnerabilities [`496836b`](https://github.com/th-ch/youtube-music/commit/496836b33b116e06b8d1361ce1f47ab6c9138cae)
- update refreshMenu() function [`33855f1`](https://github.com/th-ch/youtube-music/commit/33855f17dd80c099117a3d84bbd9b5021776771c)
- Add SponsorBlock plugin [`ca64a77`](https://github.com/th-ch/youtube-music/commit/ca64a77ed0236fd9cfb4b40e450578a186638dc7)
#### [v1.12.1](https://github.com/th-ch/youtube-music/compare/v1.12.0...v1.12.1)
> 28 May 2021
- Bump ws from 7.4.3 to 7.4.6 [`#303`](https://github.com/th-ch/youtube-music/pull/303)
- Bump browserslist from 4.16.3 to 4.16.6 [`#301`](https://github.com/th-ch/youtube-music/pull/301)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.20.4 to 1.20.5 [`#300`](https://github.com/th-ch/youtube-music/pull/300)
- [Snyk] Upgrade ytdl-core from 4.5.0 to 4.7.0 [`#299`](https://github.com/th-ch/youtube-music/pull/299)
- [Snyk] Upgrade @ffmpeg/core from 0.8.5 to 0.9.0 [`#298`](https://github.com/th-ch/youtube-music/pull/298)
- [Snyk] Upgrade filenamify from 4.2.0 to 4.3.0 [`#293`](https://github.com/th-ch/youtube-music/pull/293)
- [Snyk] Upgrade ytpl from 2.1.1 to 2.2.0 [`#285`](https://github.com/th-ch/youtube-music/pull/285)
- fix song-info callback duplication [`#269`](https://github.com/th-ch/youtube-music/pull/269)
- fix notification showing appID instead of app name on windows [`#270`](https://github.com/th-ch/youtube-music/pull/270)
- Upgrade electron to v12 [`#273`](https://github.com/th-ch/youtube-music/pull/273)
- fix last-fm overwrite config on each start [`#267`](https://github.com/th-ch/youtube-music/pull/267)
- Downloader tweaks + taskbar progress bar [`#265`](https://github.com/th-ch/youtube-music/pull/265)
- remove `open` dependency from last-fm plugin [`#262`](https://github.com/th-ch/youtube-music/pull/262)
- Fix downloader metadata if not currently playing [`#252`](https://github.com/th-ch/youtube-music/pull/252)
- fix playPause bugs by directly playPause video element [`#259`](https://github.com/th-ch/youtube-music/pull/259)
- Bump ua-parser-js from 0.7.23 to 0.7.28 [`#260`](https://github.com/th-ch/youtube-music/pull/260)
- Fix precise volume listener override [`#253`](https://github.com/th-ch/youtube-music/pull/253)
- fix css not inserting on reload [`#255`](https://github.com/th-ch/youtube-music/pull/255)
- playlist download progressBar using `chokidar` [`53bf7c5`](https://github.com/th-ch/youtube-music/commit/53bf7c5068fdc14f5aa469d47b3174d27f40e05c)
- download progress bar on taskbar [`a8ac2c3`](https://github.com/th-ch/youtube-music/commit/a8ac2c3af988f299be85010e7fea541096b7e261)
- fix: upgrade @cliqz/adblocker-electron from 1.20.4 to 1.20.5 [`c5f84b5`](https://github.com/th-ch/youtube-music/commit/c5f84b568b0c3480af1abc8ff111771e2170a50e)
#### [v1.12.0](https://github.com/th-ch/youtube-music/compare/v1.11.0...v1.12.0)
> 4 May 2021
- Menu tweaks [`#224`](https://github.com/th-ch/youtube-music/pull/224)
- Interactive notifications for windows [`#228`](https://github.com/th-ch/youtube-music/pull/228)
- [Plugin] Precise volume control [`#236`](https://github.com/th-ch/youtube-music/pull/236)
- [Snyk] Upgrade electron-store from 7.0.2 to 7.0.3 [`#244`](https://github.com/th-ch/youtube-music/pull/244)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.20.3 to 1.20.4 [`#233`](https://github.com/th-ch/youtube-music/pull/233)
- Dependencies update [`#231`](https://github.com/th-ch/youtube-music/pull/231)
- Fix downloader metadata [`#245`](https://github.com/th-ch/youtube-music/pull/245)
- Last.fm support [`#196`](https://github.com/th-ch/youtube-music/pull/196)
- simple fix for discord plugin [`#239`](https://github.com/th-ch/youtube-music/pull/239)
- In-app-menu plugin - rename plugin & configure menu builder [`#215`](https://github.com/th-ch/youtube-music/pull/215)
- Allows downloading songs that aren't currently playing [`#221`](https://github.com/th-ch/youtube-music/pull/221)
- Updated download plugin icon color to match other icons [`#222`](https://github.com/th-ch/youtube-music/pull/222)
- [Notification Plugin] Fix duplicate notification [`#216`](https://github.com/th-ch/youtube-music/pull/216)
- Pass metadata to front + use metadata URL in downloader [`#213`](https://github.com/th-ch/youtube-music/pull/213)
- Refresh menu on plugin enable/disable (show/hide submenu) [`#217`](https://github.com/th-ch/youtube-music/pull/217)
- remove 'shortcuts' from default plugins [`#218`](https://github.com/th-ch/youtube-music/pull/218)
- [Plugin] styled-bars [`#201`](https://github.com/th-ch/youtube-music/pull/201)
- Add configurable notification urgency [`#212`](https://github.com/th-ch/youtube-music/pull/212)
- add Download Folder Chooser [`#207`](https://github.com/th-ch/youtube-music/pull/207)
- Improved songinfo provider, by using the data from the '/player' request [`#194`](https://github.com/th-ch/youtube-music/pull/194)
- Download plugin directory chooser [`#10`](https://github.com/th-ch/youtube-music/pull/10)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.20.0 to 1.20.1 [`#180`](https://github.com/th-ch/youtube-music/pull/180)
- [Plugin] taskbar-mediacontrol (for Windows) [`#200`](https://github.com/th-ch/youtube-music/pull/200)
- merge source [`#3`](https://github.com/th-ch/youtube-music/pull/3)
- merge source [`#2`](https://github.com/th-ch/youtube-music/pull/2)
- Add playlist feature in downloader plugin + custom menus in plugin system [`#203`](https://github.com/th-ch/youtube-music/pull/203)
- Added Discord timeout [`#192`](https://github.com/th-ch/youtube-music/pull/192)
- Override hide(),show(),isVisible from inside plugin [`6427b34`](https://github.com/th-ch/youtube-music/commit/6427b3406c8d84c5b7ecbe6a28158d5dc895c3c2)
- added back original yarn.lock [`24fea5a`](https://github.com/th-ch/youtube-music/commit/24fea5a24afd4f547628549962d24756cca5e413)
- remove local prompt [`8dc486f`](https://github.com/th-ch/youtube-music/commit/8dc486f18fe02a218b149838dc7ab939ec1b698a)
#### [v1.11.0](https://github.com/th-ch/youtube-music/compare/v1.10.0...v1.11.0)
> 9 March 2021
- [Snyk] Upgrade electron-store from 7.0.1 to 7.0.2 [`#178`](https://github.com/th-ch/youtube-music/pull/178)
- Added function to toggle resuming of last song when app starts [`#177`](https://github.com/th-ch/youtube-music/pull/177)
- [Snyk] Upgrade discord-rpc from 3.1.4 to 3.2.0 [`#175`](https://github.com/th-ch/youtube-music/pull/175)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.19.0 to 1.20.0 [`#154`](https://github.com/th-ch/youtube-music/pull/154)
- Added metadata to downloader plugin, and updated packages [`dd1bdae`](https://github.com/th-ch/youtube-music/commit/dd1bdae9478ef831ee2a00b29be04c65626933f8)
- Fix download/speed menu item [`796a7aa`](https://github.com/th-ch/youtube-music/commit/796a7aaaf1ecaf80b2ef113137f2222499803e29)
- fix: upgrade @cliqz/adblocker-electron from 1.19.0 to 1.20.0 [`538ab52`](https://github.com/th-ch/youtube-music/commit/538ab52abd46c2e3c6abb529c5137b5286d29670)
#### [v1.10.0](https://github.com/th-ch/youtube-music/compare/v1.9.0...v1.10.0)
> 7 February 2021
- [Snyk] Upgrade @ffmpeg/ffmpeg from 0.9.6 to 0.9.7 [`#146`](https://github.com/th-ch/youtube-music/pull/146)
- Reuse the same notification, instead of creating a new one each time the song changes. [`#144`](https://github.com/th-ch/youtube-music/pull/144)
- [Snyk] Upgrade ytdl-core from 4.2.1 to 4.3.0 [`#136`](https://github.com/th-ch/youtube-music/pull/136)
- bring the new commits to this fork [`#1`](https://github.com/th-ch/youtube-music/pull/1)
- GH page [`3bcf409`](https://github.com/th-ch/youtube-music/commit/3bcf409f2b1629333714b187c606891cedb12512)
- Add plugin to control playback speed like in YouTube (from 0.25 to 2) [`f7f3185`](https://github.com/th-ch/youtube-music/commit/f7f31850d3d9879002dc47326e4f6ec9a52c25a1)
- Update back.js [`1fdf241`](https://github.com/th-ch/youtube-music/commit/1fdf2416ad414035104bfb51b8450d82e566cb13)
#### [v1.9.0](https://github.com/th-ch/youtube-music/compare/v1.8.2...v1.9.0)
> 15 January 2021
- [Snyk] Upgrade electron-debug from 3.1.0 to 3.2.0 [`#121`](https://github.com/th-ch/youtube-music/pull/121)
- Refactor providers [`#125`](https://github.com/th-ch/youtube-music/pull/125)
- Added Discord rich presence and added extra properties to songInfo provider [`#124`](https://github.com/th-ch/youtube-music/pull/124)
- Fix plugins with context isolation [`#127`](https://github.com/th-ch/youtube-music/pull/127)
- Windows portable exe [`#126`](https://github.com/th-ch/youtube-music/pull/126)
- Split providers in 2 [`0743034`](https://github.com/th-ch/youtube-music/commit/0743034de0443e889ec11d7ea83727ff4fb96599)
- Added Discord rich presence and added extra properties to songinfo provider [`a8ce87f`](https://github.com/th-ch/youtube-music/commit/a8ce87f2ccb4f0fdbd36676883e6a0497bebc263)
- Update discord plugin for new provider + wait for ready [`aec542e`](https://github.com/th-ch/youtube-music/commit/aec542e95e2837f54bf19de675f311444789ea4e)
#### [v1.8.2](https://github.com/th-ch/youtube-music/compare/v1.8.1...v1.8.2)
> 12 January 2021
- Downloader plugin - custom audio format [`#118`](https://github.com/th-ch/youtube-music/pull/118)
- Globalized the song info and song controls, and updated Touch Bar for it. [`#102`](https://github.com/th-ch/youtube-music/pull/102)
- Bump electron to v11 [`#120`](https://github.com/th-ch/youtube-music/pull/120)
- Globalized the songinfo and song controls, and changed the pause/play button. [`9be3e1a`](https://github.com/th-ch/youtube-music/commit/9be3e1afe91f0aa3419040bba65e7b3b83b469c6)
- Simplifies the notification plugin to use the globalized song info [`5bffdbd`](https://github.com/th-ch/youtube-music/commit/5bffdbd6285a6816749c467d6e912d14748f9959)
- Loads providers before plugins [`3a5d9bd`](https://github.com/th-ch/youtube-music/commit/3a5d9bd973bdd67e77f8a7687c1430245a9490bd)
#### [v1.8.1](https://github.com/th-ch/youtube-music/compare/v1.8.0...v1.8.1)
> 8 January 2021
- [Snyk] Upgrade electron-updater from 4.3.5 to 4.3.6 [`#116`](https://github.com/th-ch/youtube-music/pull/116)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.18.8 to 1.19.0 [`#117`](https://github.com/th-ch/youtube-music/pull/117)
- [Snyk] Upgrade ytdl-core from 4.1.1 to 4.1.2 [`#109`](https://github.com/th-ch/youtube-music/pull/109)
- Bump node-notifier from 8.0.0 to 8.0.1 [`#104`](https://github.com/th-ch/youtube-music/pull/104)
- fix: upgrade electron-updater from 4.3.5 to 4.3.6 [`0bf77e5`](https://github.com/th-ch/youtube-music/commit/0bf77e592a87eb8a5222cf2c1588488a51044422)
- fix: upgrade @cliqz/adblocker-electron from 1.18.8 to 1.19.0 [`5c0cc08`](https://github.com/th-ch/youtube-music/commit/5c0cc08d80d60c46e8b27343c6fc302f64fe89e2)
- fix: upgrade ytdl-core from 4.1.1 to 4.1.2 [`e2cc262`](https://github.com/th-ch/youtube-music/commit/e2cc2628aea653739f878ec2cd2e72e2e70018a1)
#### [v1.8.0](https://github.com/th-ch/youtube-music/compare/v1.7.5...v1.8.0)
> 20 December 2020
- Added Touch Bar plugin [`#101`](https://github.com/th-ch/youtube-music/pull/101)
- [Snyk] Upgrade @ffmpeg/core from 0.8.4 to 0.8.5 [`#99`](https://github.com/th-ch/youtube-music/pull/99)
- [Snyk] Upgrade @ffmpeg/ffmpeg from 0.9.5 to 0.9.6 [`#100`](https://github.com/th-ch/youtube-music/pull/100)
- [Readme] Web folder for readme assets + new SVG animation [`#96`](https://github.com/th-ch/youtube-music/pull/96)
- Add new Linux targets (deb, freebsd, rpm) [`#94`](https://github.com/th-ch/youtube-music/pull/94)
- Web folder for readme assets + new svg animation [`01fc965`](https://github.com/th-ch/youtube-music/commit/01fc9651705f457da63615ff774f00957f783d3d)
- touchbar plugin - fixed code style [`7473677`](https://github.com/th-ch/youtube-music/commit/7473677477071ca5e7b18bda3193e345d7fd549f)
- added initial touchbar support [`c3e2c13`](https://github.com/th-ch/youtube-music/commit/c3e2c1380810d156d9d6863fffc804242171bec0)
#### [v1.7.5](https://github.com/th-ch/youtube-music/compare/v1.7.4...v1.7.5)
> 12 December 2020
- Bump ini from 1.3.5 to 1.3.7 [`#92`](https://github.com/th-ch/youtube-music/pull/92)
- Fix adblocking [`#90`](https://github.com/th-ch/youtube-music/pull/90)
- Bump adblocker dependency [`49497d0`](https://github.com/th-ch/youtube-music/commit/49497d0efb28ee0be5b16d0f1c3660efafcd289c)
- Fix adblocker preloading to inject scripts/styles [`66c5ce4`](https://github.com/th-ch/youtube-music/commit/66c5ce46caa85a7ae4ceb3d63a9e168827015c71)
- Add uBlock Origin filters to default sources [`79c7959`](https://github.com/th-ch/youtube-music/commit/79c795927a3be96456a2f45159285c64166a29b8)
#### [v1.7.4](https://github.com/th-ch/youtube-music/compare/v1.7.3...v1.7.4)
> 8 December 2020
#### [v1.7.3](https://github.com/th-ch/youtube-music/compare/v1.7.2...v1.7.3)
> 8 December 2020
- Adblocker: add option to disable default lists [`22c7f70`](https://github.com/th-ch/youtube-music/commit/22c7f70c938566a9db9c4d46a57224cfdee43df0)
#### [v1.7.2](https://github.com/th-ch/youtube-music/compare/v1.7.1...v1.7.2)
> 6 December 2020
- Add AUR badge + beautify badges [`#82`](https://github.com/th-ch/youtube-music/pull/82)
- Bugfix: only use cache with no additional blocklists [`467171a`](https://github.com/th-ch/youtube-music/commit/467171a17e648331d63f166c2da2f3134e95b37f)
- Add AUR tag + beautify tags [`d212206`](https://github.com/th-ch/youtube-music/commit/d21220693b9ffa26e05fe1963376b636b40b9952)
- Readme: add youtube-music logo to badges [`3022fac`](https://github.com/th-ch/youtube-music/commit/3022facbead40ccd81629c37b870ab33ce7fa106)
#### [v1.7.1](https://github.com/th-ch/youtube-music/compare/v1.7.0...v1.7.1)
> 3 December 2020
- Option to restart the app on config changes [`fd97576`](https://github.com/th-ch/youtube-music/commit/fd97576611ae80b959ffe7984e88ddc8d28a1ffc)
- Bump version to 1.7.1 [`e07cac2`](https://github.com/th-ch/youtube-music/commit/e07cac240691b1c9d6909e457824616182374c3a)
#### [v1.7.0](https://github.com/th-ch/youtube-music/compare/v1.6.5...v1.7.0)
> 3 December 2020
- Refactor config, custom plugin options [`#79`](https://github.com/th-ch/youtube-music/pull/79)
- Refactor config for simpler use and advanced options in plugins [`8ab2da0`](https://github.com/th-ch/youtube-music/commit/8ab2da0482b6211b6b6d43423ec06daed48dac4f)
- Allow editing config (advanced) [`f4fe5c2`](https://github.com/th-ch/youtube-music/commit/f4fe5c2a58e1ad555c321f27c00d2d78184fc687)
- Adblocker - advanced options (caching or not, additional lists) [`b94d0d4`](https://github.com/th-ch/youtube-music/commit/b94d0d4e8bd3a92bbb5e012a63fa782baa774be7)
#### [v1.6.5](https://github.com/th-ch/youtube-music/compare/v1.6.4...v1.6.5)
> 2 December 2020
- Add option to disable hardware acceleration [`#77`](https://github.com/th-ch/youtube-music/pull/77)
- Downloader plugin - retry and upgrade dependencies [`#76`](https://github.com/th-ch/youtube-music/pull/76)
- Reflect Arch Linux package name change [`#70`](https://github.com/th-ch/youtube-music/pull/70)
- Option to hide menu [`#67`](https://github.com/th-ch/youtube-music/pull/67)
- Add Arch Linux installation instructions [`#68`](https://github.com/th-ch/youtube-music/pull/68)
- Update ytdl-core to 4.1.1 [`33a11ef`](https://github.com/th-ch/youtube-music/commit/33a11efe9acad234e41ad9044ae9e67fd573b7f4)
- Autoupdate modal: add download/disable updates buttons [`ae5b85d`](https://github.com/th-ch/youtube-music/commit/ae5b85d8d748659f2e23d417560026f24ab8ce9c)
- Option to hide menu (win/linux) [`4bac3ac`](https://github.com/th-ch/youtube-music/commit/4bac3ace186c5be2cb9409d2b703f960bd662145)
#### [v1.6.4](https://github.com/th-ch/youtube-music/compare/v1.6.3...v1.6.4)
> 24 November 2020
#### [v1.6.3](https://github.com/th-ch/youtube-music/compare/v1.6.2...v1.6.3)
> 24 November 2020
- Improve CI [`#64`](https://github.com/th-ch/youtube-music/pull/64)
- Ensure menu is visible on all platforms [`#63`](https://github.com/th-ch/youtube-music/pull/63)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.18.3 to 1.18.4 [`#62`](https://github.com/th-ch/youtube-music/pull/62)
- fix: upgrade @cliqz/adblocker-electron from 1.18.3 to 1.18.4 [`2b243f6`](https://github.com/th-ch/youtube-music/commit/2b243f6dcb00d3b6f27fd066c093e7b16bb384e2)
- CI: cache yarn directory [`0fd4933`](https://github.com/th-ch/youtube-music/commit/0fd49330d3218ec5f1bc62b72ace28e79d02bc93)
- Run CI on every push/PR [`cf4827d`](https://github.com/th-ch/youtube-music/commit/cf4827d780fee510a27eecf42453b0505c52bcf9)
#### [v1.6.2](https://github.com/th-ch/youtube-music/compare/v1.6.0...v1.6.2)
> 22 November 2020
- Add github action to build/release [`#60`](https://github.com/th-ch/youtube-music/pull/60)
- Bump to node 12 [`#59`](https://github.com/th-ch/youtube-music/pull/59)
- Bump to node 12 [`#59`](https://github.com/th-ch/youtube-music/pull/59)
- Add downloader (video -&gt; mp3) plugin (in music menu) [`e197087`](https://github.com/th-ch/youtube-music/commit/e197087a5027af1ca71ecde7bbdf6351137555b9)
- Delete AppVeyor/Travis CI integration [`941dd90`](https://github.com/th-ch/youtube-music/commit/941dd90d77a5c46ed5505918374693fcd892af1f)
- GH action to build/release [`fc4754a`](https://github.com/th-ch/youtube-music/commit/fc4754a1709e6eb70d662f89eafd360aa4a77aa2)
#### [v1.6.0](https://github.com/th-ch/youtube-music/compare/v1.5.0...v1.6.0)
> 11 November 2020
- [Snyk] Upgrade electron-store from 6.0.0 to 6.0.1 [`#54`](https://github.com/th-ch/youtube-music/pull/54)
- Add notifications plugin (notify of song on play event) [`bcff6e5`](https://github.com/th-ch/youtube-music/commit/bcff6e51348645395549c206717225fb16a29cda)
- Plugins/event handlers in each window [`9bc81da`](https://github.com/th-ch/youtube-music/commit/9bc81da6f2c7f5f35769489e179851bdd80a7da8)
- Option to toggle devtools [`3e97e93`](https://github.com/th-ch/youtube-music/commit/3e97e9307cf0991adc5584a603c292b03bc6202d)
#### [v1.5.0](https://github.com/th-ch/youtube-music/compare/v1.4.0...v1.5.0)
> 4 October 2020
- Bump node-fetch from 2.6.0 to 2.6.1 [`#45`](https://github.com/th-ch/youtube-music/pull/45)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.17.0 to 1.18.0 [`#47`](https://github.com/th-ch/youtube-music/pull/47)
- [Snyk] Upgrade electron-updater from 4.3.3 to 4.3.4 [`#40`](https://github.com/th-ch/youtube-music/pull/40)
- Bump elliptic from 6.5.2 to 6.5.3 [`#38`](https://github.com/th-ch/youtube-music/pull/38)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.16.0 to 1.16.1 [`#37`](https://github.com/th-ch/youtube-music/pull/37)
- Bump lodash from 4.17.15 to 4.17.19 [`#34`](https://github.com/th-ch/youtube-music/pull/34)
- Option to start at login [`#32`](https://github.com/th-ch/youtube-music/pull/32)
- Bump dependencies [`97dce5a`](https://github.com/th-ch/youtube-music/commit/97dce5ad41ba7ff7a12d4e57a6a0acfeccd666d8)
- Bump electron to v10 (+ remove devtron, bump spectron) [`5f0dcbb`](https://github.com/th-ch/youtube-music/commit/5f0dcbb3fc9b2912bba690db232184d32c599150)
- Navigation plugin: fix arrow style [`8d74a0a`](https://github.com/th-ch/youtube-music/commit/8d74a0a9b52c5b5a04b0986e5fbec9b47a35823e)
#### [v1.4.0](https://github.com/th-ch/youtube-music/compare/v1.3.3...v1.4.0)
> 12 July 2020
- Bump electron from 8.2.1 to 8.2.4 [`#31`](https://github.com/th-ch/youtube-music/pull/31)
- [Snyk] Upgrade electron-store from 5.1.1 to 5.2.0 [`#30`](https://github.com/th-ch/youtube-music/pull/30)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.14.4 to 1.15.0 [`#29`](https://github.com/th-ch/youtube-music/pull/29)
- [Snyk] Upgrade electron-debug from 3.0.1 to 3.1.0 [`#28`](https://github.com/th-ch/youtube-music/pull/28)
- [Snyk] Upgrade electron-updater from 4.3.1 to 4.3.2 [`#27`](https://github.com/th-ch/youtube-music/pull/27)
- [Snyk] Upgrade electron-updater from 4.3.0 to 4.3.1 [`#26`](https://github.com/th-ch/youtube-music/pull/26)
- [Snyk] Upgrade @cliqz/adblocker-electron from 1.14.1 to 1.14.2 [`#25`](https://github.com/th-ch/youtube-music/pull/25)
- [Tests] Add integration tests [`#24`](https://github.com/th-ch/youtube-music/pull/24)
- Add jest, spectron and getPort util for tests [`736a706`](https://github.com/th-ch/youtube-music/commit/736a70680108620cdecab2da9dd48e10354c713e)
- fix: upgrade electron-updater from 4.3.1 to 4.3.2 [`8c94510`](https://github.com/th-ch/youtube-music/commit/8c945100e24187885dbbe5bb7830b1da11e4eaa2)
- Add jest config and test environment to launch app [`bce5b7d`](https://github.com/th-ch/youtube-music/commit/bce5b7d8ebd96886d462a3c999d72e6c69b6f807)
#### [v1.3.3](https://github.com/th-ch/youtube-music/compare/v1.3.2...v1.3.3)
> 29 April 2020
- Move tray click callback in setUpTray [`4824dda`](https://github.com/th-ch/youtube-music/commit/4824dda5d52565deb5cd6ef4b51d2d742677a154)
- Bump version to 1.3.3 [`37cac19`](https://github.com/th-ch/youtube-music/commit/37cac19d9ccae59b89a68b995eaf7e08c7d24d11)
#### [v1.3.2](https://github.com/th-ch/youtube-music/compare/v1.3.1...v1.3.2)
> 26 April 2020
- [Snyk] Upgrade electron-updater from 4.2.5 to 4.3.0 [`#22`](https://github.com/th-ch/youtube-music/pull/22)
- fix: upgrade electron-updater from 4.2.5 to 4.3.0 [`9821300`](https://github.com/th-ch/youtube-music/commit/98213005d09d00bf013d2217809736bdc334ede6)
- Hide the app (no quit) on close if tray enabled [`430687f`](https://github.com/th-ch/youtube-music/commit/430687f4d6d301aaeaeeaa11ae34d971ac3280df)
- Show/hide window when clicking on tray [`058371a`](https://github.com/th-ch/youtube-music/commit/058371ace8fbd3d9f126454fdc7dbff86df05506)
#### [v1.3.1](https://github.com/th-ch/youtube-music/compare/v1.2.0...v1.3.1)
> 12 April 2020
- Add options and tray [`#21`](https://github.com/th-ch/youtube-music/pull/21)
- Upgrade outdated dependencies [`#20`](https://github.com/th-ch/youtube-music/pull/20)
- [Plugins] Migrate ad blocker [`#19`](https://github.com/th-ch/youtube-music/pull/19)
- Upgrade xo [`297de08`](https://github.com/th-ch/youtube-music/commit/297de08278c2704b3baf65c455bba72f72acc06f)
- Bump electron-builder (needed after electron upgrade) [`3d9e59d`](https://github.com/th-ch/youtube-music/commit/3d9e59dc90e0e994e20af55af9134477e68907a5)
- Migrate from adblock-rs to cliqz [`422c3fc`](https://github.com/th-ch/youtube-music/commit/422c3fc28d83da309a80447dcd5064a4346580e8)
#### [v1.2.0](https://github.com/th-ch/youtube-music/compare/v1.1.6...v1.2.0)
> 15 March 2020
- [Snyk] Upgrade electron-localshortcut from 3.1.0 to 3.2.1 [`#13`](https://github.com/th-ch/youtube-music/pull/13)
- [Snyk] Upgrade electron-updater from 4.0.6 to 4.2.2 [`#12`](https://github.com/th-ch/youtube-music/pull/12)
- [Snyk] Upgrade electron-debug from 2.1.0 to 2.2.0 [`#15`](https://github.com/th-ch/youtube-music/pull/15)
- Fix vulnerability [`#16`](https://github.com/th-ch/youtube-music/pull/16)
- Plugin: autoconfirm when paused [`#11`](https://github.com/th-ch/youtube-music/pull/11)
- Migrate to yarn to install packages without package.json (but keep npm rebuild) [`9371a48`](https://github.com/th-ch/youtube-music/commit/9371a4827e2312258a4f692c18f964155d57ceb8)
- Bump electron-store to fix a vulnerability [`7050dfc`](https://github.com/th-ch/youtube-music/commit/7050dfca5c6a545dabc334690572d7f88b37e027)
- Bump electron updater [`f25bb59`](https://github.com/th-ch/youtube-music/commit/f25bb59065d84cde202b5192688847c528c6ef61)
#### [v1.1.6](https://github.com/th-ch/youtube-music/compare/v1.1.5...v1.1.6)
> 11 September 2019
- Bump eslint-utils from 1.3.1 to 1.4.2 [`#7`](https://github.com/th-ch/youtube-music/pull/7)
- Bump lodash.mergewith from 4.6.1 to 4.6.2 [`#4`](https://github.com/th-ch/youtube-music/pull/4)
- Bump lodash from 4.17.11 to 4.17.14 [`#5`](https://github.com/th-ch/youtube-music/pull/5)
- npm audit fix [`1a72129`](https://github.com/th-ch/youtube-music/commit/1a72129108935cbe732621d93b877e90d11a4195)
- Fix Google login [`746b5f1`](https://github.com/th-ch/youtube-music/commit/746b5f13bb08c614df290e69946cfd116a550521)
- Bump version to 1.1.6 [`6fd10ea`](https://github.com/th-ch/youtube-music/commit/6fd10ea4a0f63e9a46e7307d811977f4e0f3213f)
#### [v1.1.5](https://github.com/th-ch/youtube-music/compare/v1.1.4...v1.1.5)
> 6 July 2019
- Fix navigation plugin [`b10a1bb`](https://github.com/th-ch/youtube-music/commit/b10a1bb32dbea187422a43487527c379a9ddbb26)
- Bump version to 1.1.5 [`07c4a42`](https://github.com/th-ch/youtube-music/commit/07c4a429c15f22b173629618518abb97d9ec0100)
#### [v1.1.4](https://github.com/th-ch/youtube-music/compare/v1.1.3...v1.1.4)
> 8 June 2019
- isDev -&gt; is package [`a85325f`](https://github.com/th-ch/youtube-music/commit/a85325f33dbd40517b6029e500569fc1640af2ef)
- Add titlebar/frame only on MacOS [`b1c4cc9`](https://github.com/th-ch/youtube-music/commit/b1c4cc9c45cc48413118aec8ce54767b1983a3e7)
- Bump version to 1.1.4 [`0420f2e`](https://github.com/th-ch/youtube-music/commit/0420f2e49e295cede0db22dbb1f35ffafd6318ed)
#### [v1.1.3](https://github.com/th-ch/youtube-music/compare/v1.1.2...v1.1.3)
> 2 June 2019
- Bump fstream from 1.0.11 to 1.0.12 [`#3`](https://github.com/th-ch/youtube-music/pull/3)
- Version 1.1.3 + npm audit fix [`147ac48`](https://github.com/th-ch/youtube-music/commit/147ac48de6540c836e835fefe47e66e55dbdc9bc)
- Fix case for {en/dis}ablePlugin [`e86d63d`](https://github.com/th-ch/youtube-music/commit/e86d63da8cb083b89c2a26e6514a5b0df8868b13)
- Remove outdated download links [`ec58b5c`](https://github.com/th-ch/youtube-music/commit/ec58b5cbedda8d6f881f0e81f185a1707dbe5fab)
#### [v1.1.2](https://github.com/th-ch/youtube-music/compare/v1.1.1...v1.1.2)
> 1 May 2019
- Display error/retry in case of failure [`5a1d7fb`](https://github.com/th-ch/youtube-music/commit/5a1d7fbf230fcd840a3ea654f31602fb5f504852)
- Bump version to 1.1.2 [`eac2c5c`](https://github.com/th-ch/youtube-music/commit/eac2c5cf14d0a348704f7fbf0ff0bdce02758670)
#### [v1.1.1](https://github.com/th-ch/youtube-music/compare/v1.1.0...v1.1.1)
> 28 April 2019
- Update package lock [`2d3f77d`](https://github.com/th-ch/youtube-music/commit/2d3f77d96211460bb81a73c8c62b9e5407a7cf30)
- Add travis config [`5279a45`](https://github.com/th-ch/youtube-music/commit/5279a45f3537170006ba04cd5d59ac8b879d78a5)
- Add Appveyor config [`abc2bb8`](https://github.com/th-ch/youtube-music/commit/abc2bb8a4f749704f2daf376c0d392030f030caf)
#### [v1.1.0](https://github.com/th-ch/youtube-music/compare/v1.0.0...v1.1.0)
> 19 April 2019
- Build script + check for updates [`b3c24a5`](https://github.com/th-ch/youtube-music/commit/b3c24a521281c352c37d649e8334b581b2a1de4f)
- Add download section in readme [`828e8d4`](https://github.com/th-ch/youtube-music/commit/828e8d472ca3d76dea71d95a85f8fa726404b8e7)
- Add release/licence badge in readme [`9d343bf`](https://github.com/th-ch/youtube-music/commit/9d343bf779f2fa830302cc84c484bf4a93a25f36)
#### v1.0.0
> 19 April 2019
- Initial commit - app + 4 plugins [`8787b5c`](https://github.com/th-ch/youtube-music/commit/8787b5c175d02b52de65f2c559b411d999fa51e4)
- Fix screenshot shadow + compress image [`c5c128f`](https://github.com/th-ch/youtube-music/commit/c5c128fa0f77c69e9bf12f6ca551315b37c51e84)
- Missing quote in readme [`4b446ac`](https://github.com/th-ch/youtube-music/commit/4b446ac7c816c660cf369f3b8b6e420f766ee35f)

BIN
docs/favicon/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
docs/favicon/favicon_32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

BIN
docs/favicon/favicon_48.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 B

BIN
docs/favicon/favicon_96.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 860 B

9
docs/img/adblock.svg Normal file
View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="400">
<g transform="translate(183.604 196.396)" stroke="#fff" stroke-width="2.23">
<path
style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;block-progression:tb;marker:none"
d="M-116.99 106.245l31.82 31.82 236.31-236.31-31.82-31.82z" color="#000" font-weight="400"
font-family="Sans" overflow="visible" fill="#fff" stroke="none"/>
<circle r="171.304" cy="4" cx="16" fill="none" stroke-width="44.6"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 588 B

23
docs/img/bg-bottom.svg Normal file
View File

@ -0,0 +1,23 @@
<svg width="1440" height="347" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="a">
<stop stop-color="#606483" stop-opacity="0" offset="0%"/>
<stop stop-color="#0B0D19" stop-opacity=".72" offset="100%"/>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="39.334%" y2="79.282%" id="b">
<stop stop-color="#0B0D19" offset="0%"/>
<stop stop-color="#0B0D19" stop-opacity="0" offset="100%"/>
</linearGradient>
</defs>
<g fill="none" fill-rule="evenodd">
<path
d="M177.486 208.219c78.18 89.285 218.65-81.067 218.65-119.337 0-38.27-86.408-69.295-193-69.295-106.59 0-193 31.024-193 69.295 0 38.27 89.17 30.051 167.35 119.337z"
transform="rotate(6 -140.175 3980.948)" fill="url(#a)"/>
<path
d="M252.464 335.471c101.27 115.965 283.227-105.29 283.227-154.996 0-49.705-111.929-90-250-90s-250 40.295-250 90c0 49.706 115.503 39.032 216.773 154.996z"
fill="url(#a)" transform="rotate(24 321.92 -247.724)"/>
<path
d="M302.512 242.909c88.025 32.428 156-25.04 156-55.93 0-30.888-69.844-55.928-156-55.928-86.157 0-156 25.04-156 55.929 0 30.888 67.974 23.5 156 55.929z"
fill="url(#b)" transform="rotate(24 338.741 -285.505)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

32
docs/img/bg-top.svg Normal file
View File

@ -0,0 +1,32 @@
<svg width="1440" height="318" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient x1="38.706%" y1="-187.115%" x2="18.675%" y2="110.984%" id="a">
<stop stop-color="#FFF" stop-opacity="0" offset="0%"/>
<stop stop-color="#c3352e" offset="100%"/>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="c">
<stop stop-color="#606483" stop-opacity="0" offset="0%"/>
<stop stop-color="#0B0D19" stop-opacity=".72" offset="100%"/>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="39.334%" y2="79.282%" id="d">
<stop stop-color="#0B0D19" stop-opacity=".32" offset="0%"/>
<stop stop-color="#0B0D19" stop-opacity="0" offset="100%"/>
</linearGradient>
<filter id="b">
<feTurbulence type="fractalNoise" numOctaves="2" baseFrequency=".3" result="turb"/>
<feComposite in="turb" operator="arithmetic" k1=".1" k2=".1" k3=".1" k4=".1" result="result1"/>
<feComposite operator="in" in="result1" in2="SourceGraphic" result="finalFilter"/>
<feBlend mode="multiply" in="finalFilter" in2="SourceGraphic"/>
</filter>
</defs>
<g fill="none" fill-rule="evenodd">
<path d="M88.494 90c67.04 7.177 161.094-24.753 224.996-90H.2c25.3 48.079 42.361 85.083 88.294 90z"
transform="translate(1051)" fill="url(#a)" filter="url(#b)"/>
<path
d="M250.464 367.471c101.27 115.965 283.227-105.29 283.227-154.996 0-49.705-111.929-90-250-90s-250 40.295-250 90c0 49.706 115.503 39.032 216.773 154.996z"
fill="url(#c)" transform="rotate(143 810.285 354.367)"/>
<path
d="M373.408 256.178c88.026 32.429 156-25.04 156-55.929 0-30.888-69.843-55.929-156-55.929-86.156 0-156 25.04-156 55.93 0 30.888 67.975 23.5 156 55.928z"
fill="url(#d)" transform="rotate(136 905.21 332.676)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

5
docs/img/code.svg Normal file
View File

@ -0,0 +1,5 @@
<svg width="96" height="48" xmlns="http://www.w3.org/2000/svg">
<text y="35" x="48" fill="#fff" stroke-width="0" font-size="36" font-family="Monospace" text-anchor="middle"
stroke="#fff">&lt;/&gt;
</text>
</svg>

After

Width:  |  Height:  |  Size: 224 B

8
docs/img/download.svg Normal file
View File

@ -0,0 +1,8 @@
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" class="style-scope yt-icon" style="width:100%;height:100%"
pointer-events="none" display="block" fill="#fff">
<g class="style-scope yt-icon">
<path
d="M25.462 19.105v6.848H4.515v-6.848H.489v8.861c0 1.111.9 2.012 2.016 2.012h24.967c1.115 0 2.016-.9 2.016-2.012v-8.861h-4.026zM14.62 18.426l-5.764-6.965s-.877-.828.074-.828h3.248V9.217.494S12.049 0 12.793 0h4.572c.536 0 .524.416.524.416V10.424h2.998c1.154 0 .285.867.285.867s-4.904 6.51-5.588 7.193c-.492.495-.964-.058-.964-.058z"
class="style-scope yt-icon"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 634 B

35
docs/img/footer.svg Normal file
View File

@ -0,0 +1,35 @@
<svg width="1440" height="582" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="a">
<stop stop-color="#606483" stop-opacity="0" offset="0%"/>
<stop stop-color="#363636" stop-opacity=".72" offset="100%"/>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="39.334%" y2="79.282%" id="b">
<stop stop-color="#363636" offset="0%"/>
<stop stop-color="#363636" stop-opacity="0" offset="100%"/>
</linearGradient>
<radialGradient cx="33.3%" cy="43.394%" fx="33.3%" fy="43.394%" r="57.93%"
gradientTransform="matrix(.24796 -.96592 .92535 .25883 -.151 .643)" id="c">
<stop stop-color="#c3352e" stop-opacity="0" offset="0%"/>
<stop stop-color="#c3352e" stop-opacity=".64" offset="51.712%"/>
<stop stop-color="#c3352e" stop-opacity=".24" offset="100%"/>
</radialGradient>
<filter id="d">
<feTurbulence type="fractalNoise" numOctaves="2" baseFrequency=".3" result="turb"/>
<feComposite in="turb" operator="arithmetic" k1=".1" k2=".1" k3=".1" k4=".1" result="result1"/>
<feComposite operator="in" in="result1" in2="SourceGraphic" result="finalFilter"/>
<feBlend mode="multiply" in="finalFilter" in2="SourceGraphic"/>
</filter>
</defs>
<g fill="none" fill-rule="evenodd">
<path
d="M252.464 335.471c101.27 115.965 283.227-105.29 283.227-154.996 0-49.705-111.929-90-250-90s-250 40.295-250 90c0 49.706 115.503 39.032 216.773 154.996z"
fill="url(#a)" transform="rotate(24 -272.272 -82.087)"/>
<path
d="M302.512 242.909c88.025 32.428 156-25.04 156-55.93 0-30.888-69.844-55.928-156-55.928-86.157 0-156 25.04-156 55.929 0 30.888 67.974 23.5 156 55.929z"
fill="url(#b)" transform="rotate(24 -255.451 -119.868)"/>
<path
d="M103.064 315.218c128.156 12.998 192.38 157.059 218.627 106.632 26.247-50.427-44.059-106.456 60.397-202.707 104.457-96.252-143.2-285.785-172.392-122.551C180.503 259.825-25.091 302.22 103.064 315.218z"
transform="translate(1176 -33)" fill="url(#c)" filter="url(#d)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

6
docs/img/plugins.svg Normal file
View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" fill="#fff">
<path
d="M45.563 29.174l-22-15A1 1 0 0022 15v30a.999.999 0 001.563.826l22-15a1 1 0 000-1.652zM24 43.107V16.893L43.225 30 24 43.107z"/>
<path
d="M30 0C13.458 0 0 13.458 0 30s13.458 30 30 30 30-13.458 30-30S46.542 0 30 0zm0 58C14.561 58 2 45.439 2 30S14.561 2 30 2s28 12.561 28 28-12.561 28-28 28z"/>
</svg>

After

Width:  |  Height:  |  Size: 391 B

BIN
docs/img/youtube-music.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 176 176" width="32" height="32">
<circle fill="red" cx="88" cy="88" r="88"/>
<path fill="#FFF"
d="M88 46c23.1 0 42 18.8 42 42s-18.8 42-42 42-42-18.8-42-42 18.9-42 42-42m0-4c-25.4 0-46 20.6-46 46s20.6 46 46 46 46-20.6 46-46-20.6-46-46-46z"/>
<path fill="#FFF" d="M72 111l39-24-39-22z"/>
</svg>

After

Width:  |  Height:  |  Size: 360 B

490
docs/index.html Normal file
View File

@ -0,0 +1,490 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<title>YouTube Music Desktop App (Unofficial)</title>
<link
href="./favicon/favicon.ico"
rel="icon"
sizes="16x16"
type="image/x-icon"
/>
<link
href="./favicon/favicon_32.png"
rel="icon"
sizes="32x32"
type="image/png"
/>
<link
href="./favicon/favicon_48.png"
rel="icon"
sizes="48x48"
type="image/png"
/>
<link
href="./favicon/favicon_96.png"
rel="icon"
sizes="96x96"
type="image/png"
/>
<link
href="./favicon/favicon_144.png"
rel="icon"
sizes="144x144"
type="image/png"
/>
<meta content="#131313" name="theme-color"/>
<meta
content="YouTube Music Unofficial Desktop App with built-in ad blocker and downloader"
name="description"
/>
<meta
content="YouTube&nbsp;Music&nbsp;Desktop&nbsp;App"
property="og:site_name"
/>
<meta
class="meta-url"
content="https://th-ch.github.io/youtube-music"
property="og:url"
/>
<meta content="website" property="og:type"/>
<meta
class="meta-url"
content="https://th-ch.github.io/youtube-music"
name="twitter:url"
/>
<link href="./style/fonts.css" rel="stylesheet"/>
<link href="./style/style.css" rel="stylesheet"/>
<script src="https://unpkg.com/scrollreveal"></script>
</head>
<body class="has-animations vsc-initialized" style="height: 100%;">
<div class="body-wrap boxed-container">
<header class="site-header text-light">
<div class="container">
<div class="site-header-inner">
<div class="brand header-brand">
<h1 class="m-0">
<a href="https://github.com/th-ch/youtube-music">
<img
alt="YouTube Music"
class="header-logo-image"
src="./img/youtube-music.svg"
/>
</a>
</h1>
</div>
</div>
</div>
</header>
<main>
<section class="hero text-center text-light">
<div class="hero-bg"></div>
<div class="hero-particles-container">
<canvas id="hero-particles"></canvas>
</div>
<div class="container-sm">
<div class="hero-inner">
<div class="hero-copy">
<h1 class="hero-title mt-0">
Custom YouTube Music Desktop App
</h1>
<p class="hero-paragraph">
Open source, cross-platform, unofficial YouTube Music Desktop
App with built-in <strong>ad blocker</strong> and
<strong>downloader</strong>
</p>
<div class="hero-cta">
<a
class="button button-primary button-wide-mobile"
href="https://github.com/th-ch/youtube-music/releases/latest"
>Download</a
>
</div>
</div>
<div class="mockup-container">
<div class="mockup-bg">
<img
alt="YouTube Music"
id="mockup-header-img"
src="./img/youtube-music.png"
/>
</div>
</div>
</div>
</div>
</section>
<section class="features-extended section">
<div class="features-extended-inner section-inner">
<div class="features-extended-wrap">
<div class="container">
<div class="feature-extended">
<div class="feature-extended-image">
<img
alt="Adblocker"
class="device-mockup"
data-sr-id="0"
src="./img/adblock.svg"
style="
visibility: visible;
opacity: 1;
transform: matrix3d(
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1
);
transition: opacity 0.6s
cubic-bezier(0.215, 0.61, 0.355, 1) 0s,
transform 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
"
width="100px"
/>
</div>
<div
class="feature-extended-body"
data-sr-id="5"
style="
visibility: visible;
opacity: 1;
transform: matrix3d(
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1
);
transition: opacity 0.6s
cubic-bezier(0.215, 0.61, 0.355, 1) 0s,
transform 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
"
>
<h3 class="mt-0 mb-16">Built-in adblocker</h3>
<p class="m-0">Block all ads and tracking out of the box</p>
</div>
</div>
<div class="feature-extended">
<div class="feature-extended-image">
<img
alt="Downloader"
class="device-mockup"
data-sr-id="2"
src="./img/download.svg"
style="
visibility: visible;
opacity: 1;
transform: matrix3d(
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1
);
transition: opacity 0.6s
cubic-bezier(0.215, 0.61, 0.355, 1) 0s,
transform 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
"
/>
</div>
<div
class="feature-extended-body"
data-sr-id="6"
style="
visibility: visible;
opacity: 1;
transform: matrix3d(
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1
);
transition: opacity 0.6s
cubic-bezier(0.215, 0.61, 0.355, 1) 0s,
transform 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
"
>
<h3 class="mt-0 mb-16">Built-in downloader</h3>
<p class="m-0">
Download (like youtube-dl) to custom formats (mp3, opus,
etc) directly from the interface
</p>
</div>
</div>
<div class="feature-extended">
<div class="feature-extended-image">
<img
alt="Plugins"
class="device-mockup"
data-sr-id="3"
src="./img/plugins.svg"
style="
visibility: visible;
opacity: 1;
transform: matrix3d(
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1
);
transition: opacity 0.6s
cubic-bezier(0.215, 0.61, 0.355, 1) 0s,
transform 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
"
/>
</div>
<div
class="feature-extended-body"
data-sr-id="7"
style="
visibility: visible;
opacity: 1;
transform: matrix3d(
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1
);
transition: opacity 0.6s
cubic-bezier(0.215, 0.61, 0.355, 1) 0s,
transform 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
"
>
<h3 class="mt-0 mb-16">Many other plugins in one click</h3>
<p class="m-0">
Enhance your user experience with media keys, integrations
(Discord), cosmetic filters, notifications, TouchBar,
auto-unpause and many more! Every plugin can be enabled or
disabled in one click.
</p>
</div>
</div>
<div class="feature-extended">
<div class="feature-extended-image">
<img
alt="Code"
class="device-mockup"
data-sr-id="4"
src="./img/code.svg"
style="
visibility: visible;
width: 200%;
opacity: 1;
transform: matrix3d(
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1
);
transition: opacity 0.6s
cubic-bezier(0.215, 0.61, 0.355, 1) 0s,
transform 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
"
/>
</div>
<div
class="feature-extended-body"
data-sr-id="8"
style="
visibility: visible;
opacity: 1;
transform: matrix3d(
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1,
0,
0,
0,
0,
1
);
transition: opacity 0.6s
cubic-bezier(0.215, 0.61, 0.355, 1) 0s,
transform 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) 0s;
"
>
<h3 class="mt-0 mb-16">Open source & Cross platform</h3>
<p class="m-0">
Available for Windows (installer and portable), Mac and
Linux (AppImage, deb, etc)
</p>
</div>
</div>
</div>
</div>
</div>
<div class="main-particles-container">
<canvas id="main-particles"></canvas>
</div>
</section>
</main>
<footer class="site-footer">
<div class="footer-particles-container">
<canvas id="footer-particles"></canvas>
</div>
<div class="site-footer-top">
<section class="cta section text-light">
<div class="container-sm">
<div class="cta-inner section-inner">
<div class="cta-header text-center">
<h2 class="section-title mt-0">Download and/or contribute</h2>
<p class="section-paragraph">Pull requests welcome!</p>
<div class="cta-cta">
<a
class="button button-primary button-wide-mobile"
href="https://github.com/th-ch/youtube-music"
>Go to code</a
>
</div>
</div>
</div>
</div>
</section>
</div>
<div class="site-footer-bottom">
<div class="container">
<div class="site-footer-inner">
<div class="brand footer-brand">
<a href="https://github.com/th-ch/youtube-music">
<img alt="YouTube Music logo" src="./img/youtube-music.svg"/>
</a>
</div>
<ul class="footer-links list-reset">
<li>
<a href="https://github.com/th-ch/youtube-music">Main page</a>
</li>
<li>
<a href="https://github.com/th-ch/youtube-music/issues"
>Issues</a
>
</li>
<li>
<a href="https://github.com/th-ch/youtube-music/pulls"
>Pull requests</a
>
</li>
</ul>
<ul class="footer-social-links list-reset">
<li>
<a href="https://github.com/th-ch/youtube-music">
<span class="screen-reader-text">GitHub</span>
<svg
height="16"
viewBox="0 0 1792 1792"
width="16"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M896 128q209 0 385.5 103t279.5 279.5 103 385.5q0 251-146.5 451.5t-378.5 277.5q-27 5-40-7t-13-30q0-3 .5-76.5t.5-134.5q0-97-52-142 57-6 102.5-18t94-39 81-66.5 53-105 20.5-150.5q0-119-79-206 37-91-8-204-28-9-81 11t-92 44l-38 24q-93-26-192-26t-192 26q-16-11-42.5-27t-83.5-38.5-85-13.5q-45 113-8 204-79 87-79 206 0 85 20.5 150t52.5 105 80.5 67 94 39 102.5 18q-39 36-49 103-21 10-45 15t-57 5-65.5-21.5-55.5-62.5q-19-32-48.5-52t-49.5-24l-20-3q-21 0-29 4.5t-5 11.5 9 14 13 12l7 5q22 10 43.5 38t31.5 51l10 23q13 38 44 61.5t67 30 69.5 7 55.5-3.5l23-4q0 38 .5 88.5t.5 54.5q0 18-13 30t-40 7q-232-77-378.5-277.5t-146.5-451.5q0-209 103-385.5t279.5-279.5 385.5-103zm-477 1103q3-7-7-12-10-3-13 2-3 7 7 12 9 6 13-2zm31 34q7-5-2-16-10-9-16-3-7 5 2 16 10 10 16 3zm30 45q9-7 0-19-8-13-17-6-9 5 0 18t17 7zm42 42q8-8-4-19-12-12-20-3-9 8 4 19 12 12 20 3zm57 25q3-11-13-16-15-4-19 7t13 15q15 6 19-6zm63 5q0-13-17-11-16 0-16 11 0 13 17 11 16 0 16-11zm58-10q-2-11-18-9-16 3-14 15t18 8 14-14z"
fill="#fff"
/>
</svg>
</a>
</li>
</ul>
<div class="footer-copyright">© 2021 th-ch</div>
</div>
</div>
</div>
</footer>
</div>
<script src="./js/main.js"></script>
</body>
</html>

268
docs/js/main.js Normal file
View File

@ -0,0 +1,268 @@
/* eslint-disable */
// Constants
const element = document.documentElement;
const { body } = document;
const revealOnScroll = (window.sr = ScrollReveal({ mobile: false }));
// Load animations
element.classList.remove('no-js');
element.classList.add('js');
window.addEventListener('load', () => {
body.classList.add('is-loaded');
});
if (body.classList.contains('has-animations')) {
window.addEventListener('load', () => {
revealOnScroll.reveal('.feature-extended .device-mockup', {
duration: 600,
distance: '100px',
easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)',
origin: 'bottom',
viewFactor: 0.6,
});
revealOnScroll.reveal('.feature-extended .feature-extended-body', {
duration: 600,
distance: '40px',
easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)',
origin: 'top',
viewFactor: 0.6,
});
});
}
// Bubble canvas
const bubbleCanvas = function (t) {
const e = this;
e.parentNode = t;
e.setCanvasSize();
window.addEventListener('resize', () => {
e.setCanvasSize();
});
e.mouseX = 0;
e.mouseY = 0;
window.addEventListener('mousemove', (t) => {
e.mouseX = t.clientX;
e.mouseY = t.clientY;
});
e.randomise();
};
bubbleCanvas.prototype.setCanvasSize = function () {
this.canvasWidth = this.parentNode.clientWidth;
this.canvasHeight = this.parentNode.clientHeight;
};
bubbleCanvas.prototype.generateDecimalBetween = function (start, end) {
return (Math.random() * (start - end) + end).toFixed(2);
};
bubbleCanvas.prototype.update = function () {
const t = this;
t.translateX -= t.movementX;
t.translateY -= t.movementY;
t.posX += (t.mouseX / (t.staticity / t.magnetism) - t.posX) / t.smoothFactor;
t.posY += (t.mouseY / (t.staticity / t.magnetism) - t.posY) / t.smoothFactor;
if (
t.translateY + t.posY < 0
|| t.translateX + t.posX < 0
|| t.translateX + t.posX > t.canvasWidth
) {
t.randomise();
t.translateY = t.canvasHeight;
}
};
bubbleCanvas.prototype.randomise = function () {
this.colors = ['195,53,46', '172,54,46'];
this.velocity = 20;
this.smoothFactor = 50;
this.staticity = 30;
this.magnetism = 0.1 + 4 * Math.random();
this.color = this.colors[Math.floor(Math.random() * this.colors.length)];
this.alpha = this.generateDecimalBetween(5, 10) / 10;
this.size = this.generateDecimalBetween(1, 4);
this.posX = 0;
this.posY = 0;
this.movementX = this.generateDecimalBetween(-2, 2) / this.velocity;
this.movementY = this.generateDecimalBetween(1, 20) / this.velocity;
this.translateX = this.generateDecimalBetween(0, this.canvasWidth);
this.translateY = this.generateDecimalBetween(0, this.canvasHeight);
};
const drawBubbleCanvas = function (t) {
this.canvas = document.getElementById(t);
this.ctx = this.canvas.getContext('2d');
this.dpr = window.devicePixelRatio;
};
drawBubbleCanvas.prototype.start = function (bubbleDensity) {
const t = this;
t.bubbleDensity = bubbleDensity;
t.setCanvasSize();
window.addEventListener('resize', () => {
t.setCanvasSize();
});
t.bubblesList = [];
t.generateBubbles();
t.animate();
};
drawBubbleCanvas.prototype.setCanvasSize = function () {
this.container = this.canvas.parentNode;
this.w = this.container.offsetWidth;
this.h = this.container.offsetHeight;
this.wdpi = this.w * this.dpr;
this.hdpi = this.h * this.dpr;
this.canvas.width = this.wdpi;
this.canvas.height = this.hdpi;
this.canvas.style.width = this.w + 'px';
this.canvas.style.height = this.h + 'px';
this.ctx.scale(this.dpr, this.dpr);
};
drawBubbleCanvas.prototype.animate = function () {
const t = this;
t.ctx.clearRect(0, 0, t.canvas.clientWidth, t.canvas.clientHeight);
for (const e of t.bubblesList) {
e.update();
t.ctx.translate(e.translateX, e.translateY);
t.ctx.beginPath();
t.ctx.arc(e.posX, e.posY, e.size, 0, 2 * Math.PI);
t.ctx.fillStyle = 'rgba(' + e.color + ',' + e.alpha + ')';
t.ctx.fill();
t.ctx.setTransform(t.dpr, 0, 0, t.dpr, 0, 0);
}
requestAnimationFrame(this.animate.bind(this));
};
drawBubbleCanvas.prototype.addBubble = function (t) {
return this.bubblesList.push(t);
};
drawBubbleCanvas.prototype.generateBubbles = function () {
const t = this;
for (let e = 0; e < t.bubbleDensity; e++) {
t.addBubble(new bubbleCanvas(t.canvas.parentNode));
}
};
// Night sky with stars canvas
const starCanvas = function (t) {
this.canvas = document.getElementById(t);
this.ctx = this.canvas.getContext('2d');
this.dpr = window.devicePixelRatio;
};
starCanvas.prototype.start = function () {
let w;
let h;
const setCanvasExtents = () => {
w = this.canvas.parentNode.clientWidth;
h = this.canvas.parentNode.clientHeight;
this.canvas.width = w;
this.canvas.height = h;
};
setCanvasExtents();
window.addEventListener('resize', () => {
setCanvasExtents();
});
const makeStars = (count) => {
const out = [];
for (let i = 0; i < count; i++) {
const s = {
x: Math.random() * w - w / 2,
y: Math.random() * h - h / 2,
z: Math.random() * 1000,
};
out.push(s);
}
return out;
};
const stars = makeStars(10_000);
const clear = () => {
this.ctx.fillStyle = '#212121';
this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
};
const putPixel = (x, y, brightness) => {
const intensity = brightness * 255;
const rgb = 'rgb(' + intensity + ',' + intensity + ',' + intensity + ')';
this.ctx.beginPath();
this.ctx.arc(x, y, 0.9, 0, 2 * Math.PI);
this.ctx.fillStyle = rgb;
this.ctx.fill();
};
const moveStars = (distance) => {
const count = stars.length;
for (let i = 0; i < count; i++) {
const s = stars[i];
s.z -= distance;
while (s.z <= 1) {
s.z += 1000;
}
}
};
let previousTime;
const init = (time) => {
previousTime = time;
requestAnimationFrame(tick);
};
const tick = (time) => {
const elapsed = time - previousTime;
previousTime = time;
moveStars(elapsed * 0.1);
clear();
const cx = w / 2;
const cy = h / 2;
const count = stars.length;
for (let i = 0; i < count; i++) {
const star = stars[i];
const x = cx + star.x / (star.z * 0.001);
const y = cy + star.y / (star.z * 0.001);
if (x < 0 || x >= w || y < 0 || y >= h) {
continue;
}
const d = star.z / 1000;
const b = 1 - d * d;
putPixel(x, y, b);
}
requestAnimationFrame(tick);
};
requestAnimationFrame(init);
};
// Start canvas animations
window.addEventListener('load', () => {
// Stars
const headCanvas = new starCanvas('hero-particles');
// Bubbles
const footerCanvas = new drawBubbleCanvas('footer-particles');
const mainCanvas = new drawBubbleCanvas('main-particles');
headCanvas.start();
footerCanvas.start(30);
mainCanvas.start(200);
});

53
docs/style/fonts.css Normal file
View File

@ -0,0 +1,53 @@
/* hebrew */
@font-face {
font-family: 'Heebo';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/heebo/v9/NGS6v5_NC0k9P9H0TbFhsqMA6aw.woff2) format('woff2');
unicode-range: U+0590-05FF, U+20AA, U+25CC, U+FB1D-FB4F;
}
/* latin */
@font-face {
font-family: 'Heebo';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/heebo/v9/NGS6v5_NC0k9P9H2TbFhsqMA.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* hebrew */
@font-face {
font-family: 'Heebo';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/heebo/v9/NGS6v5_NC0k9P9H0TbFhsqMA6aw.woff2) format('woff2');
unicode-range: U+0590-05FF, U+20AA, U+25CC, U+FB1D-FB4F;
}
/* latin */
@font-face {
font-family: 'Heebo';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/heebo/v9/NGS6v5_NC0k9P9H2TbFhsqMA.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
font-family: 'Oxygen';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/oxygen/v10/2sDcZG1Wl4LcnbuCNWgzZmW5Kb8VZBHR.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Oxygen';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/oxygen/v10/2sDcZG1Wl4LcnbuCNWgzaGW5Kb8VZA.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

1890
docs/style/style.css Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,50 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Cannot load YouTube Music</title>
<style>
body {
background: #000;
}
.container {
margin: 0;
font-family: Roboto, Arial, sans-serif;
font-size: 20px;
font-weight: 500;
color: rgba(255, 255, 255, 0.5);
position: absolute;
top: 50%;
left: 50%;
margin-right: -50%;
transform: translate(-50%, -50%);
text-align: center;
}
.button {
background: #065fd4;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: white;
font: inherit;
text-transform: uppercase;
text-decoration: none;
border-radius: 2px;
font-size: 16px;
font-weight: normal;
text-align: center;
padding: 8px 22px;
display: inline-block;
}
</style>
</head>
<body>
<div class="container">
<p>Cannot load YouTube Music… Internet disconnected?</p>
<a href="#" class="button" onclick="reload()">Retry</a>
</div>
</body>
</html>

160
index.js
View File

@ -1,160 +0,0 @@
"use strict";
const path = require("path");
const electron = require("electron");
const is = require("electron-is");
const { autoUpdater } = require("electron-updater");
const { setApplicationMenu } = require("./menu");
const { getEnabledPlugins, store } = require("./store");
const { fileExists, injectCSS } = require("./plugins/utils");
const app = electron.app;
// Adds debug features like hotkeys for triggering dev tools and reload
require("electron-debug")();
// Prevent window being garbage collected
let mainWindow;
autoUpdater.autoDownload = false;
let icon = "assets/youtube-music.png";
if (process.platform == "win32") {
icon = "assets/generated/icon.ico";
} else if (process.platform == "darwin") {
icon = "assets/generated/icon.icns";
}
function onClosed() {
// Dereference the window
// For multiple windows store them in an array
mainWindow = null;
}
function createMainWindow() {
const windowSize = store.get("window-size");
const windowMaximized = store.get("window-maximized");
const win = new electron.BrowserWindow({
icon : icon,
width : windowSize.width,
height : windowSize.height,
backgroundColor: "#000",
show : false,
webPreferences : {
nodeIntegration: false,
preload : path.join(__dirname, "preload.js")
},
frame : !is.macOS(),
titleBarStyle: is.macOS() ? "hiddenInset": "default"
});
if (windowMaximized) {
win.maximize();
}
win.webContents.loadURL(store.get("url"));
win.on("closed", onClosed);
injectCSS(win.webContents, path.join(__dirname, "youtube-music.css"));
win.webContents.on("did-finish-load", () => {
if (is.dev()) {
console.log("did finish load");
win.webContents.openDevTools();
}
});
getEnabledPlugins().forEach(plugin => {
console.log("Loaded plugin - " + plugin);
const pluginPath = path.join(__dirname, "plugins", plugin, "back.js");
fileExists(pluginPath, () => {
const handle = require(pluginPath);
handle(win);
});
});
win.webContents.on("did-fail-load", () => {
if (is.dev()) {
console.log("did fail load");
}
win.webContents.loadFile(path.join(__dirname, "error.html"));
});
win.webContents.on("did-navigate-in-page", () => {
const url = win.webContents.getURL();
if (url.startsWith("https://music.youtube.com")) {
store.set("url", url);
}
});
win.on("move", () => {
let position = win.getPosition();
store.set("window-position", { x: position[0], y: position[1] });
});
win.on("resize", () => {
const windowSize = win.getSize();
store.set("window-maximized", win.isMaximized());
if (!win.isMaximized()) {
store.set("window-size", { width: windowSize[0], height: windowSize[1] });
}
});
win.once("ready-to-show", () => {
win.show();
});
return win;
}
app.on("window-all-closed", () => {
if (process.platform !== "darwin") {
app.quit();
}
// Unregister all shortcuts.
electron.globalShortcut.unregisterAll();
});
app.on("activate", () => {
// On OS X it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (mainWindow === null) {
mainWindow = createMainWindow();
} else if (!mainWindow.isVisible()) {
mainWindow.show();
}
});
app.on("ready", () => {
setApplicationMenu();
mainWindow = createMainWindow();
if (!is.dev()) {
autoUpdater.checkForUpdatesAndNotify();
autoUpdater.on("update-available", () => {
const dialogOpts = {
type : "info",
buttons: ["OK"],
title : "Application Update",
message: "A new version is available",
detail :
"A new version is available and can be downloaded at https://github.com/th-ch/youtube-music/releases/latest"
};
electron.dialog.showMessageBox(dialogOpts);
});
}
// Optimized for Mac OS X
if (process.platform === "darwin") {
var forceQuit = false;
app.on("before-quit", () => {
forceQuit = true;
});
mainWindow.on("close", event => {
if (!forceQuit) {
event.preventDefault();
mainWindow.hide();
}
});
}
});

56
menu.js
View File

@ -1,56 +0,0 @@
const { app, Menu } = require("electron");
const { getAllPlugins } = require("./plugins/utils");
const { isPluginEnabled, enablePlugin, disablePlugin } = require("./store");
module.exports.setApplicationMenu = () => {
const menuTemplate = [
{
label : "Plugins",
submenu: getAllPlugins().map(plugin => {
return {
label : plugin,
type : "checkbox",
checked: isPluginEnabled(plugin),
click : item => {
if (item.checked) {
enablePlugin(plugin);
} else {
disablePlugin(plugin);
}
}
};
})
}
];
if (process.platform === "darwin") {
const name = app.getName();
menuTemplate.unshift({
label : name,
submenu: [
{ role: "about" },
{ type: "separator" },
{ role: "hide" },
{ role: "hideothers" },
{ role: "unhide" },
{ type: "separator" },
{
label : "Select All",
accelerator: "CmdOrCtrl+A",
selector : "selectAll:"
},
{ label: "Cut", accelerator: "CmdOrCtrl+X", selector: "cut:" },
{ label: "Copy", accelerator: "CmdOrCtrl+C", selector: "copy:" },
{ label: "Paste", accelerator: "CmdOrCtrl+V", selector: "paste:" },
{ type: "separator" },
{ role: "minimize" },
{ role: "close" },
{ role: "quit" }
]
});
}
const menu = Menu.buildFromTemplate(menuTemplate);
Menu.setApplicationMenu(menu);
};

7321
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,65 +1,203 @@
{
"name" : "youtube-music",
"productName": "YouTube Music",
"version" : "1.1.4",
"description": "YouTube Music Desktop App - including custom plugins",
"license" : "MIT",
"repository" : "th-ch/youtube-music",
"author" : {
"name" : "th-ch",
"email": "th-ch@users.noreply.github.com",
"url" : "https://github.com/th-ch/youtube-music"
},
"build": {
"appId" : "com.github.th-ch.youtube-music",
"productName": "YouTube Music",
"mac" : {
"identity": null,
"icon" : "assets/generated/icons/mac/icon.icns"
},
"win": {
"icon": "assets/generated/icons/win/icon.ico"
},
"linux": {
"icon" : "assets/generated/icons/png",
"category": "AudioVideo"
}
},
"scripts": {
"test" : "xo",
"start" : "electron .",
"icon" : "rimraf assets/generated && electron-icon-maker --input=assets/youtube-music.png --output=assets/generated",
"postinstall" : "npm run icon && npm rebuild && node plugins/adblocker/generator.js && electron-rebuild",
"clean" : "rimraf dist",
"build" : "npm run clean && build --win --mac --linux",
"build:mac" : "npm run clean && build --mac",
"build:win" : "npm run clean && build --win",
"release:linux": "npm run clean && build --linux -p always",
"release:mac" : "npm run clean && build --mac -p always",
"release:win" : "npm run clean && build --win -p always"
},
"dependencies": {
"ad-block" : "^4.1.3",
"electron-debug" : "^2.0.0",
"electron-is" : "^3.0.0",
"electron-localshortcut": "^3.1.0",
"electron-store" : "^2.0.0",
"electron-updater" : "^4.0.6"
},
"devDependencies": {
"devtron" : "^1.4.0",
"electron" : "^4.0.8",
"electron-builder" : "^20.40.2",
"electron-devtools-installer": "^2.2.4",
"electron-icon-maker" : "0.0.4",
"electron-rebuild" : "^1.8.4",
"rimraf" : "^2.6.3",
"xo" : "^0.24.0"
},
"xo": {
"envs": [
"node",
"browser"
]
}
"name": "youtube-music",
"productName": "YouTube Music",
"version": "2.2.0",
"description": "YouTube Music Desktop App - including custom plugins",
"main": "./dist/index.js",
"license": "MIT",
"repository": "th-ch/youtube-music",
"author": {
"name": "th-ch",
"email": "th-ch@users.noreply.github.com",
"url": "https://github.com/th-ch/youtube-music"
},
"build": {
"appId": "com.github.th-ch.youtube-music",
"productName": "YouTube Music",
"files": [
"!*",
"dist",
"license",
"!node_modules",
"node_modules/custom-electron-prompt/**",
"node_modules/@cliqz/adblocker-electron-preload/**",
"node_modules/@ffmpeg.wasm/core-mt/**",
"!node_modules/**/*.map",
"!node_modules/**/*.ts"
],
"mac": {
"identity": null,
"target": [
{
"target": "dmg",
"arch": [
"x64",
"arm64"
]
}
],
"icon": "assets/generated/icons/mac/icon.icns"
},
"win": {
"icon": "assets/generated/icons/win/icon.ico",
"target": [
{
"target": "nsis-web",
"arch": [
"x64",
"ia32",
"arm64"
]
},
{
"target": "portable",
"arch": [
"x64",
"ia32",
"arm64"
]
}
]
},
"nsisWeb": {
"runAfterFinish": false
},
"linux": {
"icon": "assets/generated/icons/png",
"category": "AudioVideo",
"target": [
"AppImage",
"snap",
"freebsd",
"deb",
"rpm"
]
},
"snap": {
"slots": [
{
"mpris": {
"interface": "mpris"
}
}
]
},
"directories": {
"output": "./pack/"
}
},
"scripts": {
"test": "playwright test",
"test:debug": "cross-env DEBUG=pw:*,-pw:test:protocol playwright test",
"rollup:preload": "rollup -c rollup.preload.config.ts --configPlugin @rollup/plugin-typescript --bundleConfigAsCjs",
"rollup:main": "rollup -c rollup.main.config.ts --configPlugin @rollup/plugin-typescript --bundleConfigAsCjs",
"build": "yarpm-pnpm run rollup:preload && yarpm-pnpm run rollup:main",
"start": "yarpm-pnpm run build && electron ./dist/index.js",
"start:debug": "cross-env ELECTRON_ENABLE_LOGGING=1 yarpm-pnpm run start",
"clean": "del-cli dist && del-cli pack",
"dist": "yarpm-pnpm run clean && yarpm-pnpm run build && electron-builder --win --mac --linux -p never",
"dist:linux": "yarpm-pnpm run clean && yarpm-pnpm run build && electron-builder --linux -p never",
"dist:mac": "yarpm-pnpm run clean && yarpm-pnpm run build && electron-builder --mac dmg:x64 -p never",
"dist:mac:arm64": "yarpm-pnpm run clean && yarpm-pnpm run build && electron-builder --mac dmg:arm64 -p never",
"dist:win": "yarpm-pnpm run clean && yarpm-pnpm run build && electron-builder --win -p never",
"dist:win:x64": "yarpm-pnpm run clean && yarpm-pnpm run build && electron-builder --win nsis-web:x64 -p never",
"lint": "eslint .",
"changelog": "npx --yes auto-changelog",
"release:linux": "yarpm-pnpm run clean && yarpm-pnpm run build && electron-builder --linux -p always -c.snap.publish=github",
"release:mac": "yarpm-pnpm run clean && yarpm-pnpm run build && electron-builder --mac -p always",
"release:win": "yarpm-pnpm run clean && yarpm-pnpm run build && electron-builder --win -p always",
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"engines": {
"node": ">=16.0.0"
},
"pnpm": {
"overrides": {
"rollup": "4.2.0",
"node-gyp": "10.0.1",
"xml2js": "0.6.2",
"node-fetch": "3.3.2",
"@electron/universal": "1.4.4",
"@babel/runtime": "7.23.2"
}
},
"overrides": {
"rollup": "4.2.0",
"node-gyp": "10.0.1",
"xml2js": "0.6.2",
"node-fetch": "3.3.2",
"@electron/universal": "1.4.4",
"@babel/runtime": "7.23.2"
},
"dependencies": {
"@cliqz/adblocker-electron": "1.26.10",
"@cliqz/adblocker-electron-preload": "1.26.10",
"@ffmpeg.wasm/core-mt": "0.12.0",
"@ffmpeg.wasm/main": "0.12.0",
"@foobar404/wave": "2.0.4",
"@jellybrick/electron-better-web-request": "1.0.4",
"@jellybrick/mpris-service": "2.1.4",
"@xhayper/discord-rpc": "1.0.24",
"async-mutex": "0.4.0",
"butterchurn": "3.0.0-beta.4",
"butterchurn-presets": "3.0.0-beta.4",
"conf": "10.2.0",
"custom-electron-prompt": "1.5.7",
"electron-debug": "3.2.0",
"electron-is": "3.0.0",
"electron-localshortcut": "3.2.1",
"electron-store": "8.1.0",
"electron-unhandled": "4.0.1",
"electron-updater": "6.1.4",
"fast-average-color": "9.4.0",
"filenamify": "6.0.0",
"howler": "2.2.4",
"html-to-text": "9.0.5",
"keyboardevent-from-electron-accelerator": "2.0.0",
"keyboardevents-areequal": "0.2.2",
"node-id3": "0.2.6",
"simple-youtube-age-restriction-bypass": "git+https://github.com/organization/Simple-YouTube-Age-Restriction-Bypass.git#v2.5.8",
"vudio": "2.1.1",
"x11": "2.3.0",
"youtubei.js": "7.0.0"
},
"devDependencies": {
"@playwright/test": "1.39.0",
"@rollup/plugin-commonjs": "25.0.7",
"@rollup/plugin-image": "3.0.3",
"@rollup/plugin-json": "6.0.1",
"@rollup/plugin-node-resolve": "15.2.3",
"@rollup/plugin-terser": "0.4.4",
"@rollup/plugin-typescript": "11.1.5",
"@rollup/plugin-wasm": "6.2.2",
"@total-typescript/ts-reset": "0.5.1",
"@types/electron-localshortcut": "3.1.2",
"@types/howler": "2.2.10",
"@types/html-to-text": "9.0.3",
"@typescript-eslint/eslint-plugin": "6.9.1",
"builtin-modules": "^3.3.0",
"cross-env": "7.0.3",
"del-cli": "5.1.0",
"electron": "27.0.3",
"electron-builder": "24.6.4",
"electron-devtools-installer": "3.2.0",
"eslint": "8.52.0",
"eslint-plugin-import": "2.29.0",
"eslint-plugin-prettier": "5.0.1",
"node-gyp": "10.0.1",
"playwright": "1.39.0",
"rollup": "4.2.0",
"rollup-plugin-copy": "3.5.0",
"rollup-plugin-import-css": "3.3.5",
"rollup-plugin-string": "3.0.0",
"typescript": "5.2.2",
"yarpm": "1.2.0"
},
"auto-changelog": {
"hideCredit": true,
"package": true,
"unreleased": true,
"output": "changelog.md"
},
"packageManager": "pnpm@8.10.2"
}

View File

@ -1 +0,0 @@
detector.buffer

View File

@ -1,3 +0,0 @@
const { blockWindowAds } = require("./blocker");
module.exports = win => blockWindowAds(win.webContents);

View File

@ -1,12 +0,0 @@
const { initialize, containsAds } = require("./contains-ads");
module.exports.blockWindowAds = webContents => {
initialize();
webContents.session.webRequest.onBeforeRequest(
["*://*./*"],
(details, cb) => {
const shouldBeBlocked = containsAds(details.url);
cb({ cancel: shouldBeBlocked });
}
);
};

View File

@ -1,24 +0,0 @@
const fs = require("fs");
const path = require("path");
const Blocker = require("ad-block");
const client = new Blocker.AdBlockClient();
const file = path.resolve(__dirname, "detector.buffer");
module.exports.client = client;
module.exports.initialize = () =>
new Promise((resolve, reject) => {
fs.readFile(file, (err, buffer) => {
if (err) {
return reject(err);
}
client.deserialize(buffer);
return resolve();
});
});
const none = Blocker.FilterOptions.noFilterOption;
const isAd = (req, base) => client.matches(req, none, base);
module.exports.containsAds = (req, base) => isAd(req, base);
module.exports.isAd = isAd;

View File

@ -1,67 +0,0 @@
// This file generates the detector buffer
const fs = require("fs");
const path = require("path");
const Blocker = require("ad-block");
const https = require("https");
const SOURCES = [
"https://raw.githubusercontent.com/kbinani/adblock-youtube-ads/master/signed.txt"
];
function parseAdblockList(client, adblockList) {
const urls = adblockList.split("\n");
const totalSize = urls.length;
console.log(
"Parsing " + totalSize + " urls (this can take a couple minutes)."
);
urls.map(line => client.parse(line));
console.log("Created buffer.");
}
function writeBuffer(client) {
const output = path.resolve(__dirname, "detector.buffer");
fs.writeFile(output, client.serialize(64), err => {
if (err) {
console.error(err);
return;
}
console.log("Wrote buffer to detector.buffer!");
});
}
function generateDetectorBuffer() {
const client = new Blocker.AdBlockClient();
let nbSourcesFetched = 0;
// fetch updated versions
SOURCES.forEach(source => {
console.log("Downloading " + source);
https
.get(source, resp => {
let data = "";
// A chunk of data has been recieved.
resp.on("data", chunk => {
data += chunk;
});
// The whole response has been received. Print out the result.
resp.on("end", () => {
parseAdblockList(client, data);
nbSourcesFetched++;
if (nbSourcesFetched === SOURCES.length) {
writeBuffer(client);
}
});
})
.on("error", err => {
console.log("Error: " + err.message);
});
});
}
module.exports = generateDetectorBuffer;
if (require.main === module) {
generateDetectorBuffer();
}

View File

@ -1,24 +0,0 @@
const { triggerAction } = require('../utils');
const CHANNEL = "navigation";
const ACTIONS = {
NEXT: "next",
BACK: 'back',
}
function goToNextPage() {
triggerAction(CHANNEL, ACTIONS.NEXT);
}
function goToPreviousPage() {
triggerAction(CHANNEL, ACTIONS.BACK);
}
module.exports = {
CHANNEL: CHANNEL,
ACTIONS: ACTIONS,
global: {
goToNextPage: goToNextPage,
goToPreviousPage: goToPreviousPage,
}
};

View File

@ -1,23 +0,0 @@
const { listenAction } = require("../utils");
const { ACTIONS, CHANNEL } = require("./actions.js");
function handle(win) {
listenAction(CHANNEL, (event, action) => {
switch (action) {
case ACTIONS.NEXT:
if (win.webContents.canGoForward()) {
win.webContents.goForward();
}
break;
case ACTIONS.BACK:
if (win.webContents.canGoBack()) {
win.webContents.goBack();
}
break;
default:
console.log("Unknown action: " + action);
}
});
}
module.exports = handle;

View File

@ -1,14 +0,0 @@
const { ElementFromFile, templatePath } = require('../utils');
function run() {
const forwardButton = ElementFromFile(templatePath(__dirname, 'forward.html'));
const backButton = ElementFromFile(templatePath(__dirname, 'back.html'));
const menu = document.querySelector("ytmusic-pivot-bar-renderer");
if (menu) {
menu.prepend(forwardButton);
menu.prepend(backButton);
}
}
module.exports = run;

View File

@ -1,21 +0,0 @@
<ytmusic-pivot-bar-item-renderer class="style-scope ytmusic-pivot-bar-renderer" tab-id="FEmusic_back" role="tab" onclick="goToPreviousPage()">
<yt-icon class="tab-icon style-scope ytmusic-pivot-bar-item-renderer">
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 100%; height: 100%;">
<g class="style-scope yt-icon">
<path class="st0" d="M109.3 265.2l218.9 218.9c5.1 5.1 11.8 7.9 19 7.9s14-2.8 19-7.9l16.1-16.1c10.5-10.5 10.5-27.6 0-38.1L198.6 246.1 382.7 62c5.1-5.1 7.9-11.8 7.9-19 0-7.2-2.8-14-7.9-19L366.5 7.9c-5.1-5.1-11.8-7.9-19-7.9-7.2 0-14 2.8-19 7.9L109.3 227c-5.1 5.1-7.9 11.9-7.8 19.1 0 7.2 2.8 14 7.8 19.1z" class="style-scope yt-icon">
</path>
</g>
</svg>
</yt-icon>
<paper-icon-button class="search-icon style-scope ytmusic-search-box" role="button" tabindex="0" aria-disabled="false" title="Go to previous page">
<iron-icon id="icon" class="style-scope paper-icon-button">
<svg viewBox="0 0 492 492" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope iron-icon" style="pointer-events: none; display: block; width: 100%; height: 100%;">
<g class="style-scope iron-icon">
<path class="st0" d="M109.3 265.2l218.9 218.9c5.1 5.1 11.8 7.9 19 7.9s14-2.8 19-7.9l16.1-16.1c10.5-10.5 10.5-27.6 0-38.1L198.6 246.1 382.7 62c5.1-5.1 7.9-11.8 7.9-19 0-7.2-2.8-14-7.9-19L366.5 7.9c-5.1-5.1-11.8-7.9-19-7.9-7.2 0-14 2.8-19 7.9L109.3 227c-5.1 5.1-7.9 11.9-7.8 19.1 0 7.2 2.8 14 7.8 19.1z">
</path>
</g>
</svg>
</iron-icon>
</paper-icon-button>
</ytmusic-pivot-bar-item-renderer>

View File

@ -1,26 +0,0 @@
<ytmusic-pivot-bar-item-renderer class="style-scope ytmusic-pivot-bar-renderer" tab-id="FEmusic_next" role="tab" onclick="goToNextPage()">
<yt-icon class="tab-icon style-scope ytmusic-pivot-bar-item-renderer">
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 100%; height: 100%;">
<g class="style-scope yt-icon">
<path d="M382.678,226.804L163.73,7.86C158.666,2.792,151.906,0,144.698,0s-13.968,2.792-19.032,7.86l-16.124,16.12
c-10.492,10.504-10.492,27.576,0,38.064L293.398,245.9l-184.06,184.06c-5.064,5.068-7.86,11.824-7.86,19.028
c0,7.212,2.796,13.968,7.86,19.04l16.124,16.116c5.068,5.068,11.824,7.86,19.032,7.86s13.968-2.792,19.032-7.86L382.678,265
c5.076-5.084,7.864-11.872,7.848-19.088C390.542,238.668,387.754,231.884,382.678,226.804z" class="style-scope yt-icon">
</path>
</g>
</svg>
</yt-icon>
<paper-icon-button class="search-icon style-scope ytmusic-search-box" role="button" tabindex="0" aria-disabled="false" title="Go to next page">
<iron-icon id="icon" class="style-scope paper-icon-button">
<svg viewBox="0 0 492 492" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope iron-icon" style="pointer-events: none; display: block; width: 100%; height: 100%;">
<g class="style-scope iron-icon">
<path class="st0" d="M382.7,226.8L163.7,7.9c-5.1-5.1-11.8-7.9-19-7.9s-14,2.8-19,7.9L109.5,24c-10.5,10.5-10.5,27.6,0,38.1
l183.9,183.9L109.3,430c-5.1,5.1-7.9,11.8-7.9,19c0,7.2,2.8,14,7.9,19l16.1,16.1c5.1,5.1,11.8,7.9,19,7.9s14-2.8,19-7.9L382.7,265
c5.1-5.1,7.9-11.9,7.8-19.1C390.5,238.7,387.8,231.9,382.7,226.8z">
</path>
</g>
</svg>
</iron-icon>
</paper-icon-button>
</ytmusic-pivot-bar-item-renderer>

View File

@ -1,6 +0,0 @@
const { injectCSS } = require("../utils");
const path = require("path");
module.exports = win => {
injectCSS(win.webContents, path.join(__dirname, "style.css"));
};

View File

@ -1,15 +0,0 @@
function removeLoginElements() {
const elementsToRemove = [
".sign-in-link.ytmusic-nav-bar",
'.ytmusic-pivot-bar-renderer[tab-id="FEmusic_liked"]'
];
elementsToRemove.forEach(selector => {
const node = document.querySelector(selector);
if (node) {
node.remove();
}
});
}
module.exports = removeLoginElements;

View File

@ -1,3 +0,0 @@
.ytmusic-pivot-bar-renderer[tab-id="FEmusic_liked"] {
display: none !important;
}

View File

@ -1,31 +0,0 @@
const { globalShortcut } = require("electron");
const electronLocalshortcut = require("electron-localshortcut");
const {
playPause,
nextTrack,
previousTrack,
startSearch
} = require("./youtube.js");
function _registerGlobalShortcut(webContents, shortcut, action) {
globalShortcut.register(shortcut, () => {
action(webContents);
});
}
function _registerLocalShortcut(win, shortcut, action) {
electronLocalshortcut.register(win, shortcut, () => {
action(win.webContents);
});
}
function registerShortcuts(win) {
_registerGlobalShortcut(win.webContents, "MediaPlayPause", playPause);
_registerGlobalShortcut(win.webContents, "MediaNextTrack", nextTrack);
_registerGlobalShortcut(win.webContents, "MediaPreviousTrack", previousTrack);
_registerLocalShortcut(win, "CommandOrControl+F", startSearch);
_registerLocalShortcut(win, "CommandOrControl+L", startSearch);
}
module.exports = registerShortcuts;

View File

@ -1,29 +0,0 @@
function _keyboardInput(webContents, key) {
return webContents.sendInputEvent({
type : "keydown",
keyCode: key
});
}
function playPause(webContents) {
return _keyboardInput(webContents, "Space");
}
function nextTrack(webContents) {
return _keyboardInput(webContents, "j");
}
function previousTrack(webContents) {
return _keyboardInput(webContents, "k");
}
function startSearch(webContents) {
return _keyboardInput(webContents, "/");
}
module.exports = {
playPause : playPause,
nextTrack : nextTrack,
previousTrack: previousTrack,
startSearch : startSearch
};

View File

@ -1,54 +0,0 @@
const fs = require("fs");
const path = require("path");
const { ipcMain, ipcRenderer } = require("electron");
// Creates a DOM element from a HTML string
module.exports.ElementFromHtml = html => {
var template = document.createElement("template");
html = html.trim(); // Never return a text node of whitespace as the result
template.innerHTML = html;
return template.content.firstChild;
};
// Creates a DOM element from a HTML file
module.exports.ElementFromFile = filepath => {
return module.exports.ElementFromHtml(fs.readFileSync(filepath, "utf8"));
};
module.exports.templatePath = (pluginPath, name) => {
return path.join(pluginPath, "templates", name);
};
module.exports.triggerAction = (channel, action) => {
return ipcRenderer.send(channel, action);
};
module.exports.listenAction = (channel, callback) => {
return ipcMain.on(channel, callback);
};
module.exports.fileExists = (path, callbackIfExists) => {
fs.access(path, fs.F_OK, err => {
if (err) {
return;
}
callbackIfExists();
});
};
module.exports.injectCSS = (webContents, filepath) => {
webContents.on("did-finish-load", () => {
webContents.insertCSS(fs.readFileSync(filepath, "utf8"));
});
};
module.exports.getAllPlugins = () => {
const isDirectory = source => fs.lstatSync(source).isDirectory();
return fs
.readdirSync(__dirname)
.map(name => path.join(__dirname, name))
.filter(isDirectory)
.map(name => path.basename(name));
};

5506
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,32 +0,0 @@
const path = require("path");
const { getCurrentWindow } = require("electron").remote;
const { getEnabledPlugins, store } = require("./store");
const { fileExists } = require("./plugins/utils");
const plugins = getEnabledPlugins();
plugins.forEach(plugin => {
const pluginPath = path.join(__dirname, "plugins", plugin, "actions.js");
fileExists(pluginPath, () => {
const actions = require(pluginPath).global || {};
Object.keys(actions).forEach(actionName => {
global[actionName] = actions[actionName];
});
});
});
document.addEventListener("DOMContentLoaded", () => {
plugins.forEach(plugin => {
const pluginPath = path.join(__dirname, "plugins", plugin, "front.js");
fileExists(pluginPath, () => {
const run = require(pluginPath);
run();
});
});
// Add action for reloading
global.reload = () =>
getCurrentWindow().webContents.loadURL(store.get("url"));
});

280
readme.md
View File

@ -1,35 +1,196 @@
# YouTube Music
[![GitHub release](https://img.shields.io/github/release/th-ch/youtube-music.svg)](https://GitHub.com/th-ch/youtube-music/releases/)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg)](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
[![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/sindresorhus/xo)
[![Build status](https://ci.appveyor.com/api/projects/status/tgre12r150ynvwl2?svg=true)](https://ci.appveyor.com/project/th-ch/youtube-music)
[![Build Status](https://travis-ci.org/th-ch/youtube-music.svg?branch=master)](https://travis-ci.org/th-ch/youtube-music)
![Screenshot](screenshot.jpg "Screenshot")
<div align="center">
[![GitHub release](https://img.shields.io/github/release/th-ch/youtube-music.svg?style=for-the-badge&logo=youtube-music)](https://github.com/th-ch/youtube-music/releases/)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
[![Build status](https://img.shields.io/github/actions/workflow/status/th-ch/youtube-music/build.yml?branch=master&style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
[![Known Vulnerabilities](https://img.shields.io/snyk/vulnerabilities/github/th-ch/youtube-music?style=for-the-badge)](https://snyk.io/test/github/th-ch/youtube-music)
[![GitHub All Releases](https://img.shields.io/github/downloads/th-ch/youtube-music/total?style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
[![AUR](https://img.shields.io/aur/version/youtube-music-bin?color=blueviolet&style=for-the-badge&logo=youtube-music)](https://aur.archlinux.org/packages/youtube-music-bin)
</div>
![Screenshot](web/screenshot.jpg "Screenshot")
<div align="center">
<a href="https://github.com/th-ch/youtube-music/releases/latest">
<img src="web/youtube-music.svg" width="400" height="100" alt="YouTube Music SVG">
</a>
</div>
**Electron wrapper around YouTube Music featuring:**
- Native look & feel, aims at keeping the original interface
- Framework for custom plugins: change YouTube Music to your needs (style, content, features), enable/disable plugins in one click
- Framework for custom plugins: change YouTube Music to your needs (style, content, features), enable/disable plugins in
one click
## Download
You can check out the [latest release](https://github.com/th-ch/youtube-music/releases/latest) to quickly find the latest version.
You can check out the [latest release](https://github.com/th-ch/youtube-music/releases/latest) to quickly find the
latest version.
### Arch Linux
Install the `youtube-music-bin` package from the AUR. For AUR installation instructions, take a look at
this [wiki page](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
### MacOS
You can install the app using Homebrew:
```bash
brew install --cask https://raw.githubusercontent.com/th-ch/youtube-music/master/youtube-music.rb
```
If you install the app manually and get an error "is damaged and cant be opened." when launching the app, run the following in the Terminal:
```bash
xattr -cr /Applications/YouTube\ Music.app
```
### Windows
You can use the [Scoop package manager](https://scoop.sh) to install the `youtube-music` package from
the [`extras` bucket](https://github.com/ScoopInstaller/Extras).
```bash
scoop bucket add extras
scoop install extras/youtube-music
```
Alternately you can use [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), Windows 11s
official CLI package manager to install the `th-ch.YouTubeMusic` package.
*Note: Microsoft Defender SmartScreen might block the installation since it is from an "unknown publisher". This is also
true for the manual installation when trying to run the executable(.exe) after a manual download here on github (same
file).*
```bash
winget install th-ch.YouTubeMusic
```
#### How to install without a network connection? (in Windows)
- Download the `*.nsis.7z` file for _your device architecture_ in [release page](https://github.com/th-ch/youtube-music/releases/latest).
- `x64` for 64-bit Windows
- `ia32` for 32-bit Windows
- `arm64` for ARM64 Windows
- Download installer in release page. (`*-Setup.exe`)
- Place them in the **same directory**.
- Run the installer.
## Available plugins:
- **Ad Blocker**: block all ads and tracking out of the box
- **No Google Login**: remove Google login buttons and links from the interface
- **Shortcuts**: use your usual shortcuts (media keys, Ctrl/CMD + F…) to control YouTube Music
- **Navigation**: next/back navigation arrows directly integrated in the interface, like in your favorite browser
- **Ad Blocker**: Block all ads and tracking out of the box
- **Album Color Theme**: Applies a dynamic theme and visual effects based on the album color palette
- **Ambient Mode**: Applies a lighting effect by casting gentle colors from the video, into your screens background.
- **Audio Compressor**: Apply compression to audio (lowers the volume of the loudest parts of the signal and raises the
volume of the softest parts)
- **Blur Nav Bar**: makes navigation bar transparent and blurry
- **Bypass age restrictions**: bypass YouTube's age verification
- **Captions selector**: Enable captions
- **Compact sidebar**: Always set the sidebar in compact mode
- **Crossfade**: Crossfade between songs
- **Disable Autoplay**: Makes every song start in "paused" mode
- [**Discord**](https://discord.com/): Show your friends what you listen to
with [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)
- **Downloader**: downloads
MP3 [directly from the interface](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl)
- **Exponential Volume**: Makes the volume
slider [exponential](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) so it's easier to
select lower volumes.
- **In-App Menu**: [gives bars a fancy, dark look](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
> (see [this post](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) if you have problem
accessing the menu after enabling this plugin and hide-menu option)
- [**Last.fm**](https://www.last.fm/): Scrobbles support
- **Lumia Stream**: Adds [Lumia Stream](https://lumiastream.com/) support
- **Lyrics Genius**: Adds lyrics support for most songs
- **Navigation**: Next/Back navigation arrows directly integrated in the interface, like in your favorite browser
- **No Google Login**: Remove Google login buttons and links from the interface
- **Notifications**: Display a notification when a song starts
playing ([interactive notifications](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png)
are available on windows)
- **Picture in picture**: allows to switch the app to picture-in-picture mode
- **Playback Speed**: Listen fast, listen
slow! [Adds a slider that controls song speed](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png)
- **Precise Volume**: Control the volume precisely using mousewheel/hotkeys, with a custom hud and customizable volume
steps
- **Quality Changer**: Allows changing the video quality with
a [button](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) on
the video overlay
- **Shortcuts**: Allows setting global hotkeys for playback (play/pause/next/previous) +
disable [media osd](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png)
by overriding media keys + enable Ctrl/CMD + F to search + enable linux mpris support for
mediakeys + [custom hotkeys](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50)
for [advanced users](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)
- **Skip-Silences** - Automatically skip silenced sections
- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Automatically Skips non-music parts like intro/outro or
parts of music videos where the song isn't playing
- **Taskbar Media Control**: Control playback from
your [Windows taskbar](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
- **Touchbar**: Custom TouchBar layout for macOS
- **Tuna-OBS**: Integration with [OBS](https://obsproject.com/)'s
plugin [Tuna](https://obsproject.com/forum/resources/tuna.843/)
- **Video Toggle**: Adds
a [button](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png) to
switch between Video/Song mode. can also optionally remove the whole video tab
- **Visualizer**: Different music visualizers
---
- **Auto confirm when paused** (Always Enabled): disable
the ["Continue Watching?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png)
popup that pause music after a certain time
> If `Hide Menu` option is on - you can show the menu with the <kbd>alt</kbd> key (or <kbd>\`</kbd> [backtick] if using
> the in-app-menu plugin)
## Themes
You can load CSS files to change the look of the application (Options > Visual Tweaks > Themes).
Some predefined themes are available in https://github.com/kerichdev/themes-for-ytmdesktop-player.
## Dev
```sh
```bash
git clone https://github.com/th-ch/youtube-music
cd youtube-music
npm install
npm start
pnpm install --frozen-lockfile
pnpm start
```
## Build your own plugins
@ -43,20 +204,46 @@ Using plugins, you can:
Create a folder in `plugins/YOUR-PLUGIN-NAME`:
- if you need to manipulate the BrowserWindow, create a file `back.js` with the following template:
- if you need to manipulate the BrowserWindow, create a file with the following template:
```node
module.exports = win => {
// win is the BrowserWindow object
```typescript
// file: back.ts
export default (win: Electron.BrowserWindow, config: ConfigType<'YOUR-PLUGIN-NAME'>) => {
// something
};
```
- if you need to change the front, create a file `front.js` with the following template:
then, register the plugin in `index.ts`:
```node
module.exports = () => {
// This function will be called as a preload script
// So you can use front features like `document.querySelector`
```typescript
import yourPlugin from './plugins/YOUR-PLUGIN-NAME/back';
// ...
const mainPlugins = {
// ...
'YOUR-PLUGIN-NAME': yourPlugin,
};
```
- if you need to change the front, create a file with the following template:
```typescript
// file: front.ts
export default (config: ConfigType<'YOUR-PLUGIN-NAME'>) => {
// This function will be called as a preload script
// So you can use front features like `document.querySelector`
};
```
then, register the plugin in `preload.ts`:
```typescript
import yourPlugin from './plugins/YOUR-PLUGIN-NAME/front';
const rendererPlugins: PluginMapper<'renderer'> = {
// ...
'YOUR-PLUGIN-NAME': yourPlugin,
};
```
@ -64,35 +251,50 @@ module.exports = () => {
- injecting custom CSS: create a `style.css` file in the same folder then:
```node
const path = require("path");
const { injectCSS } = require("../utils");
```typescript
import path from 'node:path';
import { injectCSS } from '../utils';
// back.js
module.exports = win => {
injectCSS(win.webContents, path.join(__dirname, "style.css"));
// back.ts
export default (win: Electron.BrowserWindow) => {
injectCSS(win.webContents, path.join(__dirname, 'style.css'));
};
```
- changing the HTML:
```node
// front.js
module.exports = () => {
// Remove the login button
document.querySelector('.sign-in-link.ytmusic-nav-bar').remove();
```typescript
// front.ts
export default () => {
// Remove the login button
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
};
```
- communicating between the front and back: can be done using the ipcMain module from electron. See `utils.js` file and example in `navigation` plugin.
- communicating between the front and back: can be done using the ipcMain module from electron. See `utils.js` file and
example in `navigation` plugin.
## Build
```sh
npm run build
1. Clone the repo
2. Follow [this guide](https://pnpm.io/installation) to install `pnpm`
3. Run `pnpm install --frozen-lockfile` to install dependencies
4. Run `pnpm build:OS`
- `pnpm dist:win` - Windows
- `pnpm dist:linux` - Linux
- `pnpm dist:mac` - MacOS
Builds the app for macOS, Linux, and Windows,
using [electron-builder](https://github.com/electron-userland/electron-builder).
## Tests
```bash
pnpm test
```
Builds the app for macOS, Linux, and Windows, using [electron-builder](https://github.com/electron-userland/electron-builder).
Uses [Playwright](https://playwright.dev/) to test the app.
## License

60
rollup.main.config.ts Normal file
View File

@ -0,0 +1,60 @@
import { defineConfig } from 'rollup';
import builtinModules from 'builtin-modules';
import typescript from '@rollup/plugin-typescript';
import commonjs from '@rollup/plugin-commonjs';
import nodeResolvePlugin from '@rollup/plugin-node-resolve';
import json from '@rollup/plugin-json';
import terser from '@rollup/plugin-terser';
import { string } from 'rollup-plugin-string';
import css from 'rollup-plugin-import-css';
import wasmPlugin from '@rollup/plugin-wasm';
import copy from 'rollup-plugin-copy';
export default defineConfig({
plugins: [
typescript({
module: 'ESNext',
}),
nodeResolvePlugin({
browser: false,
preferBuiltins: true,
exportConditions: ['node', 'default', 'module', 'import'],
}),
commonjs({
ignoreDynamicRequires: true,
}),
wasmPlugin({
maxFileSize: 0,
targetEnv: 'browser',
}),
json(),
string({
include: '**/*.html',
}),
css(),
copy({
targets: [
{ src: 'src/error.html', dest: 'dist/' },
{ src: 'assets', dest: 'dist/' },
],
}),
terser({
ecma: 2020,
}),
{
closeBundle() {
if (!process.env.ROLLUP_WATCH) {
setTimeout(() => process.exit(0));
}
},
name: 'force-close',
},
],
input: './src/index.ts',
output: {
format: 'cjs',
name: '[name].js',
dir: './dist',
},
external: ['electron', 'custom-electron-prompt', ...builtinModules],
});

54
rollup.preload.config.ts Normal file
View File

@ -0,0 +1,54 @@
import { defineConfig } from 'rollup';
import builtinModules from 'builtin-modules';
import typescript from '@rollup/plugin-typescript';
import commonjs from '@rollup/plugin-commonjs';
import nodeResolvePlugin from '@rollup/plugin-node-resolve';
import json from '@rollup/plugin-json';
import terser from '@rollup/plugin-terser';
import { string } from 'rollup-plugin-string';
import css from 'rollup-plugin-import-css';
import wasmPlugin from '@rollup/plugin-wasm';
import image from '@rollup/plugin-image';
export default defineConfig({
plugins: [
typescript({
module: 'ESNext',
}),
nodeResolvePlugin({
browser: false,
preferBuiltins: true,
}),
commonjs({
ignoreDynamicRequires: true,
}),
json(),
string({
include: '**/*.html',
}),
css(),
wasmPlugin({
maxFileSize: 0,
targetEnv: 'browser',
}),
image({ dom: true }),
terser({
ecma: 2020,
}),
{
closeBundle() {
if (!process.env.ROLLUP_WATCH) {
setTimeout(() => process.exit(0));
}
},
name: 'force-close',
},
],
input: './src/preload.ts',
output: {
format: 'cjs',
name: '[name].js',
dir: './dist',
},
external: ['electron', 'custom-electron-prompt', ...builtinModules],
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 816 KiB

298
src/config/defaults.ts Normal file
View File

@ -0,0 +1,298 @@
import { blockers } from '../plugins/adblocker/blocker-types';
import { DefaultPresetList } from '../plugins/downloader/types';
export interface WindowSizeConfig {
width: number;
height: number;
}
export interface DefaultConfig {
'window-size': {
width: number;
height: number;
}
'window-maximized': boolean;
'window-position': {
x: number;
y: number;
}
url: string;
options: {
tray: boolean;
appVisible: boolean;
autoUpdates: boolean;
alwaysOnTop: boolean;
hideMenu: boolean;
hideMenuWarned: boolean;
startAtLogin: boolean;
disableHardwareAcceleration: boolean;
removeUpgradeButton: boolean;
restartOnConfigChanges: boolean;
trayClickPlayPause: boolean;
autoResetAppCache: boolean;
resumeOnStart: boolean;
likeButtons: string;
proxy: string;
startingPage: string;
overrideUserAgent: boolean;
themes: string[];
}
}
const defaultConfig = {
'window-size': {
width: 1100,
height: 550,
},
'window-maximized': false,
'window-position': {
x: -1,
y: -1,
},
'url': 'https://music.youtube.com',
'options': {
tray: false,
appVisible: true,
autoUpdates: true,
alwaysOnTop: false,
hideMenu: false,
hideMenuWarned: false,
startAtLogin: false,
disableHardwareAcceleration: false,
removeUpgradeButton: false,
restartOnConfigChanges: false,
trayClickPlayPause: false,
autoResetAppCache: false,
resumeOnStart: true,
likeButtons: '',
proxy: '',
startingPage: '',
overrideUserAgent: false,
themes: [] as string[],
},
/** please order alphabetically */
'plugins': {
'adblocker': {
enabled: true,
cache: true,
blocker: blockers.InPlayer as string,
additionalBlockLists: [], // Additional list of filters, e.g "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt"
disableDefaultLists: false,
},
'album-color-theme': {},
'ambient-mode': {
enabled: false,
quality: 50,
buffer: 30,
interpolationTime: 1500,
blur: 100,
size: 100,
opacity: 1,
fullscreen: false,
},
'audio-compressor': {},
'blur-nav-bar': {},
'bypass-age-restrictions': {},
'captions-selector': {
enabled: false,
disableCaptions: false,
autoload: false,
lastCaptionsCode: '',
},
'compact-sidebar': {},
'crossfade': {
enabled: false,
fadeInDuration: 1500, // Ms
fadeOutDuration: 5000, // Ms
secondsBeforeEnd: 10, // S
fadeScaling: 'linear', // 'linear', 'logarithmic' or a positive number in dB
},
'disable-autoplay': {
applyOnce: false,
},
'discord': {
enabled: false,
autoReconnect: true, // If enabled, will try to reconnect to discord every 5 seconds after disconnecting or failing to connect
activityTimoutEnabled: true, // If enabled, the discord rich presence gets cleared when music paused after the time specified below
activityTimoutTime: 10 * 60 * 1000, // 10 minutes
playOnYouTubeMusic: true, // Add a "Play on YouTube Music" button to rich presence
hideGitHubButton: false, // Disable the "View App On GitHub" button
hideDurationLeft: false, // Hides the start and end time of the song to rich presence
},
'downloader': {
enabled: false,
downloadFolder: undefined as string | undefined, // Custom download folder (absolute path)
selectedPreset: 'mp3 (256kbps)', // Selected preset
customPresetSetting: DefaultPresetList['mp3 (256kbps)'], // Presets
skipExisting: false,
playlistMaxItems: undefined as number | undefined,
},
'http-api': {},
'exponential-volume': {},
'in-app-menu': {
/**
* true in Windows, false in Linux and macOS (see youtube-music/config/store.ts)
*/
enabled: false,
hideDOMWindowControls: false,
},
'last-fm': {
enabled: false,
token: undefined as string | undefined, // Token used for authentication
session_key: undefined as string | undefined, // Session key used for scrobbling
api_root: 'http://ws.audioscrobbler.com/2.0/',
api_key: '04d76faaac8726e60988e14c105d421a', // Api key registered by @semvis123
secret: 'a5d2a36fdf64819290f6982481eaffa2',
},
'lumiastream': {},
'lyrics-genius': {
romanizedLyrics: false,
},
'navigation': {
enabled: true,
},
'no-google-login': {},
'notifications': {
enabled: false,
unpauseNotification: false,
urgency: 'normal', // Has effect only on Linux
// the following has effect only on Windows
interactive: true,
toastStyle: 1, // See plugins/notifications/utils for more info
refreshOnPlayPause: false,
trayControls: true,
hideButtonText: false,
},
'picture-in-picture': {
'enabled': false,
'alwaysOnTop': true,
'savePosition': true,
'saveSize': false,
'hotkey': 'P',
'pip-position': [10, 10],
'pip-size': [450, 275],
'isInPiP': false,
'useNativePiP': false,
},
'playback-speed': {},
'precise-volume': {
enabled: false,
steps: 1, // Percentage of volume to change
arrowsShortcut: true, // Enable ArrowUp + ArrowDown local shortcuts
globalShortcuts: {
volumeUp: '',
volumeDown: '',
},
savedVolume: undefined as number | undefined, // Plugin save volume between session here
},
'quality-changer': {},
'shortcuts': {
enabled: false,
overrideMediaKeys: false,
global: {
previous: '',
playPause: '',
next: '',
} as Record<string, string>,
local: {
previous: '',
playPause: '',
next: '',
} as Record<string, string>,
},
'skip-silences': {
onlySkipBeginning: false,
},
'sponsorblock': {
enabled: false,
apiURL: 'https://sponsor.ajay.app',
categories: [
'sponsor',
'intro',
'outro',
'interaction',
'selfpromo',
'music_offtopic',
],
},
'taskbar-mediacontrol': {},
'touchbar': {},
'tuna-obs': {},
'video-toggle': {
enabled: false,
hideVideo: false,
mode: 'custom',
forceHide: false,
align: '',
},
'visualizer': {
enabled: false,
type: 'butterchurn',
// Config per visualizer
butterchurn: {
preset: 'martin [shadow harlequins shape code] - fata morgana',
renderingFrequencyInMs: 500,
blendTimeInSeconds: 2.7,
},
vudio: {
effect: 'lighting',
accuracy: 128,
lighting: {
maxHeight: 160,
maxSize: 12,
lineWidth: 1,
color: '#49f3f7',
shadowBlur: 2,
shadowColor: 'rgba(244,244,244,.5)',
fadeSide: true,
prettify: false,
horizontalAlign: 'center',
verticalAlign: 'middle',
dottify: true,
},
},
wave: {
animations: [
{
type: 'Cubes',
config: {
bottom: true,
count: 30,
cubeHeight: 5,
fillColor: { gradient: ['#FAD961', '#F76B1C'] },
lineColor: 'rgba(0,0,0,0)',
radius: 20,
},
},
{
type: 'Cubes',
config: {
top: true,
count: 12,
cubeHeight: 5,
fillColor: { gradient: ['#FAD961', '#F76B1C'] },
lineColor: 'rgba(0,0,0,0)',
radius: 10,
},
},
{
type: 'Circles',
config: {
lineColor: {
gradient: ['#FAD961', '#FAD961', '#F76B1C'],
rotate: 90,
},
lineWidth: 4,
diameter: 20,
count: 10,
frequencyBand: 'base',
},
},
],
},
},
},
};
export default defaultConfig;

241
src/config/dynamic.ts Normal file
View File

@ -0,0 +1,241 @@
/* eslint-disable @typescript-eslint/require-await */
import { ipcMain, ipcRenderer } from 'electron';
import defaultConfig from './defaults';
import { getOptions, setMenuOptions, setOptions } from './plugins';
import { sendToFront } from '../providers/app-controls';
import { Entries } from '../utils/type-utils';
export type DefaultPluginsConfig = typeof defaultConfig.plugins;
export type OneOfDefaultConfigKey = keyof DefaultPluginsConfig;
export type OneOfDefaultConfig = typeof defaultConfig.plugins[OneOfDefaultConfigKey];
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const activePlugins: { [key in OneOfDefaultConfigKey]?: PluginConfig<any> } = {};
/**
* [!IMPORTANT!]
* The method is **sync** in the main process and **async** in the renderer process.
*/
export const getActivePlugins
= process.type === 'renderer'
? async () => ipcRenderer.invoke('get-active-plugins')
: () => activePlugins;
if (process.type === 'browser') {
ipcMain.handle('get-active-plugins', getActivePlugins);
}
/**
* [!IMPORTANT!]
* The method is **sync** in the main process and **async** in the renderer process.
*/
export const isActive
= process.type === 'renderer'
? async (plugin: string) =>
plugin in (await ipcRenderer.invoke('get-active-plugins'))
: (plugin: string): boolean => plugin in activePlugins;
interface PluginConfigOptions {
enableFront: boolean;
initialOptions?: OneOfDefaultConfig;
}
/**
* This class is used to create a dynamic synced config for plugins.
*
* [!IMPORTANT!]
* The methods are **sync** in the main process and **async** in the renderer process.
*
* @param {string} name - The name of the plugin.
* @param {boolean} [options.enableFront] - Whether the config should be available in front.js. Default: false.
* @param {object} [options.initialOptions] - The initial options for the plugin. Default: loaded from store.
*
* @example
* const { PluginConfig } = require("../../config/dynamic");
* const config = new PluginConfig("plugin-name", { enableFront: true });
* module.exports = { ...config };
*
* // or
*
* module.exports = (win, options) => {
* const config = new PluginConfig("plugin-name", {
* enableFront: true,
* initialOptions: options,
* });
* setupMyPlugin(win, config);
* };
*/
export type ConfigType<T extends OneOfDefaultConfigKey> = typeof defaultConfig.plugins[T];
type ValueOf<T> = T[keyof T];
type Mode<T, Mode extends 'r' | 'm'> = Mode extends 'r' ? Promise<T> : T;
export class PluginConfig<T extends OneOfDefaultConfigKey> {
private readonly name: string;
private readonly config: ConfigType<T>;
private readonly defaultConfig: ConfigType<T>;
private readonly enableFront: boolean;
private subscribers: { [key in keyof ConfigType<T>]?: (config: ConfigType<T>) => void } = {};
private allSubscribers: ((config: ConfigType<T>) => void)[] = [];
constructor(
name: T,
options: PluginConfigOptions = {
enableFront: false,
},
) {
const pluginDefaultConfig = defaultConfig.plugins[name] ?? {};
const pluginConfig = options.initialOptions || getOptions(name) || {};
this.name = name;
this.enableFront = options.enableFront;
this.defaultConfig = pluginDefaultConfig;
this.config = { ...pluginDefaultConfig, ...pluginConfig };
if (this.enableFront) {
this.setupFront();
}
activePlugins[name] = this;
}
get<Key extends keyof ConfigType<T> = keyof ConfigType<T>>(key: Key): ConfigType<T>[Key] {
return this.config?.[key];
}
set(key: keyof ConfigType<T>, value: ValueOf<ConfigType<T>>) {
this.config[key] = value;
this.onChange(key);
this.save();
}
getAll(): ConfigType<T> {
return { ...this.config };
}
setAll(options: Partial<ConfigType<T>>) {
if (!options || typeof options !== 'object') {
throw new Error('Options must be an object.');
}
let changed = false;
for (const [key, value] of Object.entries(options) as Entries<typeof options>) {
if (this.config[key] !== value) {
if (value !== undefined) this.config[key] = value;
this.onChange(key, false);
changed = true;
}
}
if (changed) {
for (const fn of this.allSubscribers) {
fn(this.config);
}
}
this.save();
}
getDefaultConfig() {
return this.defaultConfig;
}
/**
* Use this method to set an option and restart the app if `appConfig.restartOnConfigChange === true`
*
* Used for options that require a restart to take effect.
*/
setAndMaybeRestart(key: keyof ConfigType<T>, value: ValueOf<ConfigType<T>>) {
this.config[key] = value;
setMenuOptions(this.name, this.config);
this.onChange(key);
}
subscribe(valueName: keyof ConfigType<T>, fn: (config: ConfigType<T>) => void) {
this.subscribers[valueName] = fn;
}
subscribeAll(fn: (config: ConfigType<T>) => void) {
this.allSubscribers.push(fn);
}
/** Called only from back */
private save() {
setOptions(this.name, this.config);
}
private onChange(valueName: keyof ConfigType<T>, single: boolean = true) {
this.subscribers[valueName]?.(this.config[valueName] as ConfigType<T>);
if (single) {
for (const fn of this.allSubscribers) {
fn(this.config);
}
}
}
private setupFront() {
const ignoredMethods = ['subscribe', 'subscribeAll'];
if (process.type === 'renderer') {
for (const [fnName, fn] of Object.entries(this) as Entries<this>) {
if (typeof fn !== 'function' || fn.name in ignoredMethods) {
return;
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-return
this[fnName] = (async (...args: any) => await ipcRenderer.invoke(
`${this.name}-config-${String(fnName)}`,
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
...args,
)) as typeof this[keyof this];
this.subscribe = (valueName, fn: (config: ConfigType<T>) => void) => {
if (valueName in this.subscribers) {
console.error(`Already subscribed to ${String(valueName)}`);
}
this.subscribers[valueName] = fn;
ipcRenderer.on(
`${this.name}-config-changed-${String(valueName)}`,
(_, value: ConfigType<T>) => {
fn(value);
},
);
ipcRenderer.send(`${this.name}-config-subscribe`, valueName);
};
this.subscribeAll = (fn: (config: ConfigType<T>) => void) => {
ipcRenderer.on(`${this.name}-config-changed`, (_, value: ConfigType<T>) => {
fn(value);
});
ipcRenderer.send(`${this.name}-config-subscribe-all`);
};
}
} else if (process.type === 'browser') {
for (const [fnName, fn] of Object.entries(this) as Entries<this>) {
if (typeof fn !== 'function' || fn.name in ignoredMethods) {
return;
}
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-return
ipcMain.handle(`${this.name}-config-${String(fnName)}`, (_, ...args) => fn(...args));
}
ipcMain.on(`${this.name}-config-subscribe`, (_, valueName: keyof ConfigType<T>) => {
this.subscribe(valueName, (value) => {
sendToFront(`${this.name}-config-changed-${String(valueName)}`, value);
});
});
ipcMain.on(`${this.name}-config-subscribe-all`, () => {
this.subscribeAll((value) => {
sendToFront(`${this.name}-config-changed`, value);
});
});
}
}
}

53
src/config/index.ts Normal file
View File

@ -0,0 +1,53 @@
import Store from 'electron-store';
import defaultConfig from './defaults';
import plugins from './plugins';
import store from './store';
import { restart } from '../providers/app-controls';
const set = (key: string, value: unknown) => {
store.set(key, value);
};
function setMenuOption(key: string, value: unknown) {
set(key, value);
if (store.get('options.restartOnConfigChanges')) {
restart();
}
}
// MAGIC OF TYPESCRIPT
type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...0[]]
type Join<K, P> = K extends string | number ?
P extends string | number ?
`${K}${'' extends P ? '' : '.'}${P}`
: never : never;
type Paths<T, D extends number = 10> = [D] extends [never] ? never : T extends object ?
{ [K in keyof T]-?: K extends string | number ?
`${K}` | Join<K, Paths<T[K], Prev[D]>>
: never
}[keyof T] : ''
type SplitKey<K> = K extends `${infer A}.${infer B}` ? [A, B] : [K, string];
type PathValue<T, K extends string> =
SplitKey<K> extends [infer A extends keyof T, infer B extends string]
? PathValue<T[A], B>
: T;
const get = <Key extends Paths<typeof defaultConfig>>(key: Key) => store.get(key) as PathValue<typeof defaultConfig, typeof key>;
export default {
defaultConfig,
get,
set,
setMenuOption,
edit: () => store.openInEditor(),
watch(cb: Parameters<Store['onDidChange']>[1]) {
store.onDidChange('options', cb);
store.onDidChange('plugins', cb);
},
plugins,
};

75
src/config/plugins.ts Normal file
View File

@ -0,0 +1,75 @@
import store from './store';
import defaultConfig from './defaults';
import { restart } from '../providers/app-controls';
import { Entries } from '../utils/type-utils';
interface Plugin {
enabled: boolean;
}
type DefaultPluginsConfig = typeof defaultConfig.plugins;
export function getEnabled() {
const plugins = store.get('plugins') as DefaultPluginsConfig;
return (Object.entries(plugins) as Entries<DefaultPluginsConfig>).filter(([plugin]) =>
isEnabled(plugin),
);
}
export function isEnabled(plugin: string) {
const pluginConfig = (store.get('plugins') as Record<string, Plugin>)[plugin];
return pluginConfig !== undefined && pluginConfig.enabled;
}
/**
* Set options for a plugin
* @param plugin Plugin name
* @param options Options to set
* @param exclude Options to exclude from the options object
*/
export function setOptions<T>(plugin: string, options: T, exclude: string[] = ['enabled']) {
const plugins = store.get('plugins') as Record<string, T>;
// HACK: This is a workaround for preventing changed options from being overwritten
exclude.forEach((key) => {
if (Object.prototype.hasOwnProperty.call(options, key)) {
delete options[key as keyof T];
}
});
store.set('plugins', {
...plugins,
[plugin]: {
...plugins[plugin],
...options,
},
});
}
export function setMenuOptions<T>(plugin: string, options: T, exclude: string[] = ['enabled']) {
setOptions(plugin, options, exclude);
if (store.get('options.restartOnConfigChanges')) {
restart();
}
}
export function getOptions<T>(plugin: string): T {
return (store.get('plugins') as Record<string, T>)[plugin];
}
export function enable(plugin: string) {
setMenuOptions(plugin, { enabled: true }, []);
}
export function disable(plugin: string) {
setMenuOptions(plugin, { enabled: false }, []);
}
export default {
isEnabled,
getEnabled,
enable,
disable,
setOptions,
setMenuOptions,
getOptions,
};

161
src/config/store.ts Normal file
View File

@ -0,0 +1,161 @@
import Store from 'electron-store';
import Conf from 'conf';
import is from 'electron-is';
import defaults from './defaults';
import { DefaultPresetList, type Preset } from '../plugins/downloader/types';
const getDefaults = () => {
if (is.windows()) {
defaults.plugins['in-app-menu'].enabled = true;
}
return defaults;
};
const setDefaultPluginOptions = (store: Conf<Record<string, unknown>>, plugin: keyof typeof defaults.plugins) => {
if (!store.get(`plugins.${plugin}`)) {
store.set(`plugins.${plugin}`, defaults.plugins[plugin]);
}
};
const migrations = {
'>=2.1.3'(store: Conf<Record<string, unknown>>) {
const listenAlong = store.get('plugins.discord.listenAlong');
if (listenAlong !== undefined) {
store.set('plugins.discord.playOnYouTubeMusic', listenAlong);
store.delete('plugins.discord.listenAlong');
}
},
'>=2.1.0'(store: Conf<Record<string, unknown>>) {
const originalPreset = store.get('plugins.downloader.preset') as string | undefined;
if (originalPreset) {
if (originalPreset !== 'opus') {
store.set('plugins.downloader.selectedPreset', 'Custom');
store.set('plugins.downloader.customPresetSetting', {
extension: 'mp3',
ffmpegArgs: store.get('plugins.downloader.ffmpegArgs') as string[] ?? DefaultPresetList['mp3 (256kbps)'].ffmpegArgs,
} satisfies Preset);
} else {
store.set('plugins.downloader.selectedPreset', 'Source');
store.set('plugins.downloader.customPresetSetting', {
extension: null,
ffmpegArgs: store.get('plugins.downloader.ffmpegArgs') as string[] ?? [],
} satisfies Preset);
}
store.delete('plugins.downloader.preset');
store.delete('plugins.downloader.ffmpegArgs');
}
},
'>=1.20.0'(store: Conf<Record<string, unknown>>) {
setDefaultPluginOptions(store, 'visualizer');
if (store.get('plugins.notifications.toastStyle') === undefined) {
const pluginOptions = store.get('plugins.notifications') || {};
store.set('plugins.notifications', {
...defaults.plugins.notifications,
...pluginOptions,
});
}
if (store.get('options.ForceShowLikeButtons')) {
store.delete('options.ForceShowLikeButtons');
store.set('options.likeButtons', 'force');
}
},
'>=1.17.0'(store: Conf<Record<string, unknown>>) {
setDefaultPluginOptions(store, 'picture-in-picture');
if (store.get('plugins.video-toggle.mode') === undefined) {
store.set('plugins.video-toggle.mode', 'custom');
}
},
'>=1.14.0'(store: Conf<Record<string, unknown>>) {
if (
typeof store.get('plugins.precise-volume.globalShortcuts') !== 'object'
) {
store.set('plugins.precise-volume.globalShortcuts', {});
}
if (store.get('plugins.hide-video-player.enabled')) {
store.delete('plugins.hide-video-player');
store.set('plugins.video-toggle.enabled', true);
}
},
'>=1.13.0'(store: Conf<Record<string, unknown>>) {
if (store.get('plugins.discord.listenAlong') === undefined) {
store.set('plugins.discord.listenAlong', true);
}
},
'>=1.12.0'(store: Conf<Record<string, unknown>>) {
const options = store.get('plugins.shortcuts') as Record<string, {
action: string;
shortcut: unknown;
}[] | Record<string, unknown>>;
let updated = false;
for (const optionType of ['global', 'local']) {
if (Array.isArray(options[optionType])) {
const optionsArray = options[optionType] as {
action: string;
shortcut: unknown;
}[];
const updatedOptions: Record<string, unknown> = {};
for (const optionObject of optionsArray) {
if (optionObject.action && optionObject.shortcut) {
updatedOptions[optionObject.action] = optionObject.shortcut;
}
}
options[optionType] = updatedOptions;
updated = true;
}
}
if (updated) {
store.set('plugins.shortcuts', options);
}
},
'>=1.11.0'(store: Conf<Record<string, unknown>>) {
if (store.get('options.resumeOnStart') === undefined) {
store.set('options.resumeOnStart', true);
}
},
'>=1.7.0'(store: Conf<Record<string, unknown>>) {
const enabledPlugins = store.get('plugins') as string[];
if (!Array.isArray(enabledPlugins)) {
console.warn('Plugins are not in array format, cannot migrate');
return;
}
// Include custom options
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const plugins: Record<string, any> = {
adblocker: {
enabled: true,
cache: true,
additionalBlockLists: [],
},
downloader: {
enabled: false,
ffmpegArgs: [], // E.g. ["-b:a", "192k"] for an audio bitrate of 192kb/s
downloadFolder: undefined, // Custom download folder (absolute path)
},
};
for (const enabledPlugin of enabledPlugins) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
plugins[enabledPlugin] = {
...plugins[enabledPlugin],
enabled: true,
};
}
store.set('plugins', plugins);
},
};
export default new Store({
defaults: getDefaults(),
clearInvalidConfig: false,
migrations,
});

85
src/custom-electron-prompt.d.ts vendored Normal file
View File

@ -0,0 +1,85 @@
declare module 'custom-electron-prompt' {
import { BrowserWindow } from 'electron';
export type SelectOptions = Record<string, string>;
export interface CounterOptions {
minimum?: number;
maximum?: number;
multiFire?: boolean;
}
export interface KeybindOptions {
value: string;
label: string;
default?: string;
}
export interface InputOptions {
label: string;
value: unknown;
inputAttrs?: Partial<HTMLInputElement>;
selectOptions?: SelectOptions;
}
interface BasePromptOptions<T extends string> {
type?: T;
width?: number;
height?: number;
resizable?: boolean;
title?: string;
label?: string;
buttonLabels?: {
ok?: string;
cancel?: string;
};
alwaysOnTop?: boolean;
value?: unknown;
icon?: string;
useHtmlLabel?: boolean;
customStylesheet?: string;
menuBarVisible?: boolean;
skipTaskbar?: boolean;
frame?: boolean;
customScript?: string;
enableRemoteModule?: boolean;
inputAttrs?: Partial<HTMLInputElement>;
}
export type InputPromptOptions = BasePromptOptions<'input'>;
export interface SelectPromptOptions extends BasePromptOptions<'select'> {
selectOptions: SelectOptions;
}
export interface CounterPromptOptions extends BasePromptOptions<'counter'> {
counterOptions: CounterOptions;
}
export interface MultiInputPromptOptions extends BasePromptOptions<'multiInput'> {
multiInputOptions: InputOptions[];
}
export interface KeybindPromptOptions extends BasePromptOptions<'keybind'> {
keybindOptions: KeybindOptions[];
}
export type PromptOptions<T extends string> = (
T extends 'input' ? InputPromptOptions :
T extends 'select' ? SelectPromptOptions :
T extends 'counter' ? CounterPromptOptions :
T extends 'keybind' ? KeybindPromptOptions :
T extends 'multiInput' ? MultiInputPromptOptions :
never
);
type PromptResult<T extends string> = T extends 'input' ? string :
T extends 'select' ? string :
T extends 'counter' ? number :
T extends 'keybind' ? {
value: string;
accelerator: string
}[] :
T extends 'multiInput' ? string[] :
never;
const prompt: <T extends Type>(options?: PromptOptions<T> & { type: T }, parent?: BrowserWindow) => Promise<PromptResult<T> | null>;
export default prompt;
}

50
src/error.html Normal file
View File

@ -0,0 +1,50 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Cannot load YouTube Music</title>
<style>
body {
background: #000;
}
.container {
margin: 0;
font-family: Roboto, Arial, sans-serif;
font-size: 20px;
font-weight: 500;
color: rgba(255, 255, 255, 0.5);
position: absolute;
top: 50%;
left: 50%;
margin-right: -50%;
transform: translate(-50%, -50%);
text-align: center;
}
.button {
background: #065fd4;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: white;
font: inherit;
text-transform: uppercase;
text-decoration: none;
border-radius: 2px;
font-size: 16px;
font-weight: normal;
text-align: center;
padding: 8px 22px;
display: inline-block;
}
</style>
</head>
<body>
<div class="container">
<p>Cannot load YouTube Music… Internet disconnected?</p>
<a class="button" href="#" onclick="reload()">Retry</a>
</div>
</body>
</html>

641
src/index.ts Normal file
View File

@ -0,0 +1,641 @@
import path from 'node:path';
import { BrowserWindow, app, screen, globalShortcut, session, shell, dialog, ipcMain } from 'electron';
import enhanceWebRequest, { BetterSession } from '@jellybrick/electron-better-web-request';
import is from 'electron-is';
import unhandled from 'electron-unhandled';
import { autoUpdater } from 'electron-updater';
import electronDebug from 'electron-debug';
import config from './config';
import { refreshMenu, setApplicationMenu } from './menu';
import { fileExists, injectCSS, injectCSSAsFile } from './plugins/utils';
import { isTesting } from './utils/testing';
import { setUpTray } from './tray';
import { setupSongInfo } from './providers/song-info';
import { restart, setupAppControls } from './providers/app-controls';
import { APP_PROTOCOL, handleProtocol, setupProtocolHandler } from './providers/protocol-handler';
import adblocker from './plugins/adblocker/back';
import albumColorTheme from './plugins/album-color-theme/back';
import ambientMode from './plugins/ambient-mode/back';
import blurNavigationBar from './plugins/blur-nav-bar/back';
import captionsSelector from './plugins/captions-selector/back';
import crossfade from './plugins/crossfade/back';
import discord from './plugins/discord/back';
import downloader from './plugins/downloader/back';
import httpApi from './plugins/http-api/back';
import inAppMenu from './plugins/in-app-menu/back';
import lastFm from './plugins/last-fm/back';
import lumiaStream from './plugins/lumiastream/back';
import lyricsGenius from './plugins/lyrics-genius/back';
import navigation from './plugins/navigation/back';
import noGoogleLogin from './plugins/no-google-login/back';
import notifications from './plugins/notifications/back';
import pictureInPicture, { setOptions as pipSetOptions } from './plugins/picture-in-picture/back';
import preciseVolume from './plugins/precise-volume/back';
import qualityChanger from './plugins/quality-changer/back';
import shortcuts from './plugins/shortcuts/back';
import sponsorBlock from './plugins/sponsorblock/back';
import taskbarMediaControl from './plugins/taskbar-mediacontrol/back';
import touchbar from './plugins/touchbar/back';
import tunaObs from './plugins/tuna-obs/back';
import videoToggle from './plugins/video-toggle/back';
import visualizer from './plugins/visualizer/back';
import youtubeMusicCSS from './youtube-music.css';
// Catch errors and log them
unhandled({
logger: console.error,
showDialog: false,
});
// Disable Node options if the env var is set
process.env.NODE_OPTIONS = '';
// Prevent window being garbage collected
let mainWindow: Electron.BrowserWindow | null;
autoUpdater.autoDownload = false;
const gotTheLock = app.requestSingleInstanceLock();
if (!gotTheLock) {
app.exit();
}
// SharedArrayBuffer: Required for downloader (@ffmpeg/core-mt)
// OverlayScrollbar: Required for overlay scrollbars
app.commandLine.appendSwitch('enable-features', 'OverlayScrollbar,SharedArrayBuffer');
if (config.get('options.disableHardwareAcceleration')) {
if (is.dev()) {
console.log('Disabling hardware acceleration');
}
app.disableHardwareAcceleration();
}
if (is.linux() && config.plugins.isEnabled('shortcuts')) {
// Stops chromium from launching its own MPRIS service
app.commandLine.appendSwitch('disable-features', 'MediaSessionService');
}
if (config.get('options.proxy')) {
app.commandLine.appendSwitch('proxy-server', config.get('options.proxy'));
}
// Adds debug features like hotkeys for triggering dev tools and reload
electronDebug({
showDevTools: false, // Disable automatic devTools on new window
});
let icon = 'assets/youtube-music.png';
if (process.platform === 'win32') {
icon = 'assets/generated/icon.ico';
} else if (process.platform === 'darwin') {
icon = 'assets/generated/icon.icns';
}
function onClosed() {
// Dereference the window
// For multiple Windows store them in an array
mainWindow = null;
}
const mainPlugins = {
'adblocker': adblocker,
'album-color-theme': albumColorTheme,
'ambient-mode': ambientMode,
'blur-nav-bar': blurNavigationBar,
'captions-selector': captionsSelector,
'crossfade': crossfade,
'discord': discord,
'downloader': downloader,
'http-api': httpApi,
'in-app-menu': inAppMenu,
'last-fm': lastFm,
'lumiastream': lumiaStream,
'lyrics-genius': lyricsGenius,
'navigation': navigation,
'no-google-login': noGoogleLogin,
'notifications': notifications,
'picture-in-picture': pictureInPicture,
'precise-volume': preciseVolume,
'quality-changer': qualityChanger,
'shortcuts': shortcuts,
'sponsorblock': sponsorBlock,
'taskbar-mediacontrol': undefined as typeof taskbarMediaControl | undefined,
'touchbar': undefined as typeof touchbar | undefined,
'tuna-obs': tunaObs,
'video-toggle': videoToggle,
'visualizer': visualizer,
};
export const mainPluginNames = Object.keys(mainPlugins);
if (is.windows()) {
mainPlugins['taskbar-mediacontrol'] = taskbarMediaControl;
delete mainPlugins['touchbar'];
} else if (is.macOS()) {
mainPlugins['touchbar'] = touchbar;
delete mainPlugins['taskbar-mediacontrol'];
} else {
delete mainPlugins['touchbar'];
delete mainPlugins['taskbar-mediacontrol'];
}
ipcMain.handle('get-main-plugin-names', () => Object.keys(mainPlugins));
async function loadPlugins(win: BrowserWindow) {
injectCSS(win.webContents, youtubeMusicCSS);
// Load user CSS
const themes: string[] = config.get('options.themes');
if (Array.isArray(themes)) {
for (const cssFile of themes) {
fileExists(
cssFile,
() => {
injectCSSAsFile(win.webContents, cssFile);
},
() => {
console.warn(`CSS file "${cssFile}" does not exist, ignoring`);
},
);
}
}
win.webContents.once('did-finish-load', () => {
if (is.dev()) {
console.log('did finish load');
win.webContents.openDevTools();
}
});
for (const [plugin, options] of config.plugins.getEnabled()) {
try {
if (Object.hasOwn(mainPlugins, plugin)) {
console.log('Loaded plugin - ' + plugin);
const handler = mainPlugins[plugin as keyof typeof mainPlugins];
if (handler) {
await handler(win, options as never);
}
}
} catch (e) {
console.error(`Failed to load plugin "${plugin}"`, e);
}
}
}
async function createMainWindow() {
const windowSize = config.get('window-size');
const windowMaximized = config.get('window-maximized');
const windowPosition: Electron.Point = config.get('window-position');
const useInlineMenu = config.plugins.isEnabled('in-app-menu');
const win = new BrowserWindow({
icon,
width: windowSize.width,
height: windowSize.height,
backgroundColor: '#000',
show: false,
webPreferences: {
// TODO: re-enable contextIsolation once it can work with FFMpeg.wasm
// Possible bundling? https://github.com/ffmpegwasm/ffmpeg.wasm/issues/126
contextIsolation: false,
preload: path.join(__dirname, 'preload.js'),
nodeIntegrationInSubFrames: true,
...(isTesting()
? undefined
: {
// Sandbox is only enabled in tests for now
// See https://www.electronjs.org/docs/latest/tutorial/sandbox#preload-scripts
sandbox: false,
}),
},
frame: !is.macOS() && !useInlineMenu,
titleBarOverlay: {
color: '#00000000',
symbolColor: '#ffffff',
height: 36,
},
titleBarStyle: useInlineMenu
? 'hidden'
: (is.macOS()
? 'hiddenInset'
: 'default'),
autoHideMenuBar: config.get('options.hideMenu'),
});
await loadPlugins(win);
if (windowPosition) {
const { x: windowX, y: windowY } = windowPosition;
const winSize = win.getSize();
const displaySize
= screen.getDisplayNearestPoint(windowPosition).bounds;
if (
windowX + winSize[0] < displaySize.x - 8
|| windowX - winSize[0] > displaySize.x + displaySize.width
|| windowY < displaySize.y - 8
|| windowY > displaySize.y + displaySize.height
) {
// Window is offscreen
if (is.dev()) {
console.log(
`Window tried to render offscreen, windowSize=${String(winSize)}, displaySize=${String(displaySize)}, position=${String(windowPosition)}`,
);
}
} else {
win.setPosition(windowX, windowY);
}
}
if (windowMaximized) {
win.maximize();
}
if (config.get('options.alwaysOnTop')) {
win.setAlwaysOnTop(true);
}
const urlToLoad = config.get('options.resumeOnStart')
? config.get('url')
: config.defaultConfig.url;
win.on('closed', onClosed);
type PiPOptions = typeof config.defaultConfig.plugins['picture-in-picture'];
const setPiPOptions = config.plugins.isEnabled('picture-in-picture')
// eslint-disable-next-line @typescript-eslint/no-var-requires
? (key: string, value: unknown) => pipSetOptions({ [key]: value })
: () => {};
win.on('move', () => {
if (win.isMaximized()) {
return;
}
const position = win.getPosition();
const isPiPEnabled: boolean
= config.plugins.isEnabled('picture-in-picture')
&& config.plugins.getOptions<PiPOptions>('picture-in-picture').isInPiP;
if (!isPiPEnabled) {
lateSave('window-position', { x: position[0], y: position[1] });
} else if (config.plugins.getOptions<PiPOptions>('picture-in-picture').savePosition) {
lateSave('pip-position', position, setPiPOptions);
}
});
let winWasMaximized: boolean;
win.on('resize', () => {
const windowSize = win.getSize();
const isMaximized = win.isMaximized();
const isPiPEnabled
= config.plugins.isEnabled('picture-in-picture')
&& config.plugins.getOptions<PiPOptions>('picture-in-picture').isInPiP;
if (!isPiPEnabled && winWasMaximized !== isMaximized) {
winWasMaximized = isMaximized;
config.set('window-maximized', isMaximized);
}
if (isMaximized) {
return;
}
if (!isPiPEnabled) {
lateSave('window-size', {
width: windowSize[0],
height: windowSize[1],
});
} else if (config.plugins.getOptions<PiPOptions>('picture-in-picture').saveSize) {
lateSave('pip-size', windowSize, setPiPOptions);
}
});
const savedTimeouts: Record<string, NodeJS.Timeout | undefined> = {};
function lateSave(key: string, value: unknown, fn: (key: string, value: unknown) => void = config.set) {
if (savedTimeouts[key]) {
clearTimeout(savedTimeouts[key]);
}
savedTimeouts[key] = setTimeout(() => {
fn(key, value);
savedTimeouts[key] = undefined;
}, 600);
}
app.on('render-process-gone', (event, webContents, details) => {
showUnresponsiveDialog(win, details);
});
win.once('ready-to-show', () => {
if (config.get('options.appVisible')) {
win.show();
}
});
removeContentSecurityPolicy();
win.webContents.loadURL(urlToLoad);
return win;
}
app.once('browser-window-created', (event, win) => {
if (config.get('options.overrideUserAgent')) {
// User agents are from https://developers.whatismybrowser.com/useragents/explore/
const originalUserAgent = win.webContents.userAgent;
const userAgents = {
mac: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 12.1; rv:95.0) Gecko/20100101 Firefox/95.0',
windows: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0',
linux: 'Mozilla/5.0 (Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0',
};
const updatedUserAgent
= is.macOS() ? userAgents.mac
: (is.windows() ? userAgents.windows
: userAgents.linux);
win.webContents.userAgent = updatedUserAgent;
app.userAgentFallback = updatedUserAgent;
win.webContents.session.webRequest.onBeforeSendHeaders((details, cb) => {
// This will only happen if login failed, and "retry" was pressed
if (win.webContents.getURL().startsWith('https://accounts.google.com') && details.url.startsWith('https://accounts.google.com')) {
details.requestHeaders['User-Agent'] = originalUserAgent;
}
cb({ requestHeaders: details.requestHeaders });
});
}
setupSongInfo(win);
setupAppControls();
win.webContents.on('did-fail-load', (
_event,
errorCode,
errorDescription,
validatedURL,
isMainFrame,
frameProcessId,
frameRoutingId,
) => {
const log = JSON.stringify({
error: 'did-fail-load',
errorCode,
errorDescription,
validatedURL,
isMainFrame,
frameProcessId,
frameRoutingId,
}, null, '\t');
if (is.dev()) {
console.log(log);
}
if (errorCode !== -3) { // -3 is a false positive
win.webContents.send('log', log);
win.webContents.loadFile(path.join(__dirname, 'error.html'));
}
});
win.webContents.on('will-prevent-unload', (event) => {
event.preventDefault();
});
});
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
// Unregister all shortcuts.
globalShortcut.unregisterAll();
});
app.on('activate', async () => {
// On OS X it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (mainWindow === null) {
mainWindow = await createMainWindow();
} else if (!mainWindow.isVisible()) {
mainWindow.show();
}
});
app.on('ready', async () => {
if (config.get('options.autoResetAppCache')) {
// Clear cache after 20s
const clearCacheTimeout = setTimeout(() => {
if (is.dev()) {
console.log('Clearing app cache.');
}
session.defaultSession.clearCache();
clearTimeout(clearCacheTimeout);
}, 20_000);
}
// Register appID on windows
if (is.windows()) {
const appID = 'com.github.th-ch.youtube-music';
app.setAppUserModelId(appID);
const appLocation = process.execPath;
const appData = app.getPath('appData');
// Check shortcut validity if not in dev mode / running portable app
if (!is.dev() && !appLocation.startsWith(path.join(appData, '..', 'Local', 'Temp'))) {
const shortcutPath = path.join(appData, 'Microsoft', 'Windows', 'Start Menu', 'Programs', 'YouTube Music.lnk');
try { // Check if shortcut is registered and valid
const shortcutDetails = shell.readShortcutLink(shortcutPath); // Throw error if doesn't exist yet
if (
shortcutDetails.target !== appLocation
|| shortcutDetails.appUserModelId !== appID
) {
throw 'needUpdate';
}
} catch (error) { // If not valid -> Register shortcut
shell.writeShortcutLink(
shortcutPath,
error === 'needUpdate' ? 'update' : 'create',
{
target: appLocation,
cwd: path.dirname(appLocation),
description: 'YouTube Music Desktop App - including custom plugins',
appUserModelId: appID,
},
);
}
}
}
mainWindow = await createMainWindow();
setApplicationMenu(mainWindow);
refreshMenu(mainWindow);
setUpTray(app, mainWindow);
setupProtocolHandler(mainWindow);
app.on('second-instance', (_, commandLine) => {
const uri = `${APP_PROTOCOL}://`;
const protocolArgv = commandLine.find((arg) => arg.startsWith(uri));
if (protocolArgv) {
const lastIndex = protocolArgv.endsWith('/') ? -1 : undefined;
const command = protocolArgv.slice(uri.length, lastIndex);
if (is.dev()) {
console.debug(`Received command over protocol: "${command}"`);
}
handleProtocol(command);
return;
}
if (!mainWindow) {
return;
}
if (mainWindow.isMinimized()) {
mainWindow.restore();
}
if (!mainWindow.isVisible()) {
mainWindow.show();
}
mainWindow.focus();
});
// Autostart at login
app.setLoginItemSettings({
openAtLogin: config.get('options.startAtLogin'),
});
if (!is.dev() && config.get('options.autoUpdates')) {
const updateTimeout = setTimeout(() => {
autoUpdater.checkForUpdatesAndNotify();
clearTimeout(updateTimeout);
}, 2000);
autoUpdater.on('update-available', () => {
const downloadLink
= 'https://github.com/th-ch/youtube-music/releases/latest';
const dialogOptions: Electron.MessageBoxOptions = {
type: 'info',
buttons: ['OK', 'Download', 'Disable updates'],
title: 'Application Update',
message: 'A new version is available',
detail: `A new version is available and can be downloaded at ${downloadLink}`,
};
dialog.showMessageBox(dialogOptions).then((dialogOutput) => {
switch (dialogOutput.response) {
// Download
case 1: {
shell.openExternal(downloadLink);
break;
}
// Disable updates
case 2: {
config.set('options.autoUpdates', false);
break;
}
default: {
break;
}
}
});
});
}
if (config.get('options.hideMenu') && !config.get('options.hideMenuWarned')) {
dialog.showMessageBox(mainWindow, {
type: 'info', title: 'Hide Menu Enabled',
message: "Menu is hidden, use 'Alt' to show it (or 'Escape' if using in-app-menu)",
});
config.set('options.hideMenuWarned', true);
}
// Optimized for Mac OS X
if (is.macOS() && !config.get('options.appVisible')) {
app.dock.hide();
}
let forceQuit = false;
app.on('before-quit', () => {
forceQuit = true;
});
if (is.macOS() || config.get('options.tray')) {
mainWindow.on('close', (event) => {
// Hide the window instead of quitting (quit is available in tray options)
if (!forceQuit) {
event.preventDefault();
mainWindow!.hide();
}
});
}
});
function showUnresponsiveDialog(win: BrowserWindow, details: Electron.RenderProcessGoneDetails) {
if (details) {
console.log('Unresponsive Error!\n' + JSON.stringify(details, null, '\t'));
}
dialog.showMessageBox(win, {
type: 'error',
title: 'Window Unresponsive',
message: 'The Application is Unresponsive',
detail: 'We are sorry for the inconvenience! please choose what to do:',
buttons: ['Wait', 'Relaunch', 'Quit'],
cancelId: 0,
}).then((result) => {
switch (result.response) {
case 1: {
restart();
break;
}
case 2: {
app.quit();
break;
}
}
});
}
function removeContentSecurityPolicy(
betterSession: BetterSession = session.defaultSession as BetterSession,
) {
// Allows defining multiple "onHeadersReceived" listeners
// by enhancing the session.
// Some plugins (e.g. adblocker) also define a "onHeadersReceived" listener
enhanceWebRequest(betterSession);
// Custom listener to tweak the content security policy
betterSession.webRequest.onHeadersReceived((details, callback) => {
details.responseHeaders ??= {};
// Remove the content security policy
delete details.responseHeaders['content-security-policy-report-only'];
delete details.responseHeaders['content-security-policy'];
callback({ cancel: false, responseHeaders: details.responseHeaders });
});
// When multiple listeners are defined, apply them all
betterSession.webRequest.setResolver('onHeadersReceived', async (listeners) => {
return listeners.reduce(
async (accumulator, listener) => {
const acc = await accumulator;
if (acc.cancel) {
return acc;
}
const result = await listener.apply();
return { ...accumulator, ...result };
},
Promise.resolve({ cancel: false }),
);
});
}

484
src/menu.ts Normal file
View File

@ -0,0 +1,484 @@
import is from 'electron-is';
import { app, BrowserWindow, clipboard, dialog, Menu } from 'electron';
import prompt from 'custom-electron-prompt';
import { restart } from './providers/app-controls';
import config from './config';
import { startingPages } from './providers/extracted-data';
import promptOptions from './providers/prompt-options';
import adblockerMenu from './plugins/adblocker/menu';
import ambientModeMenu from './plugins/ambient-mode/menu';
import captionsSelectorMenu from './plugins/captions-selector/menu';
import crossfadeMenu from './plugins/crossfade/menu';
import disableAutoplayMenu from './plugins/disable-autoplay/menu';
import discordMenu from './plugins/discord/menu';
import downloaderMenu from './plugins/downloader/menu';
import inAppMenuTitlebarMenu from './plugins/in-app-menu/menu';
import lyricsGeniusMenu from './plugins/lyrics-genius/menu';
import notificationsMenu from './plugins/notifications/menu';
import pictureInPictureMenu from './plugins/picture-in-picture/menu';
import preciseVolumeMenu from './plugins/precise-volume/menu';
import shortcutsMenu from './plugins/shortcuts/menu';
import videoToggleMenu from './plugins/video-toggle/menu';
import visualizerMenu from './plugins/visualizer/menu';
import { getAvailablePluginNames } from './plugins/utils';
export type MenuTemplate = Electron.MenuItemConstructorOptions[];
// True only if in-app-menu was loaded on launch
const inAppMenuActive = config.plugins.isEnabled('in-app-menu');
const betaPlugins = ['crossfade', 'lumiastream'];
const pluginMenus = {
'adblocker': adblockerMenu,
'ambient-mode': ambientModeMenu,
'disable-autoplay': disableAutoplayMenu,
'captions-selector': captionsSelectorMenu,
'crossfade': crossfadeMenu,
'discord': discordMenu,
'downloader': downloaderMenu,
'in-app-menu': inAppMenuTitlebarMenu,
'lyrics-genius': lyricsGeniusMenu,
'notifications': notificationsMenu,
'picture-in-picture': pictureInPictureMenu,
'precise-volume': preciseVolumeMenu,
'shortcuts': shortcutsMenu,
'video-toggle': videoToggleMenu,
'visualizer': visualizerMenu,
};
const pluginEnabledMenu = (plugin: string, label = '', hasSubmenu = false, refreshMenu: (() => void ) | undefined = undefined): Electron.MenuItemConstructorOptions => ({
label: label || plugin,
type: 'checkbox',
checked: config.plugins.isEnabled(plugin),
click(item: Electron.MenuItem) {
if (item.checked) {
config.plugins.enable(plugin);
} else {
config.plugins.disable(plugin);
}
if (hasSubmenu) {
refreshMenu?.();
}
},
});
export const refreshMenu = (win: BrowserWindow) => {
setApplicationMenu(win);
if (inAppMenuActive) {
win.webContents.send('refreshMenu');
}
};
export const mainMenuTemplate = (win: BrowserWindow): MenuTemplate => {
const innerRefreshMenu = () => refreshMenu(win);
return [
{
label: 'Plugins',
submenu:
getAvailablePluginNames().map((pluginName) => {
let pluginLabel = pluginName;
if (betaPlugins.includes(pluginLabel)) {
pluginLabel += ' [beta]';
}
if (Object.hasOwn(pluginMenus, pluginName)) {
const getPluginMenu = pluginMenus[pluginName as keyof typeof pluginMenus];
if (!config.plugins.isEnabled(pluginName)) {
return pluginEnabledMenu(pluginName, pluginLabel, true, innerRefreshMenu);
}
return {
label: pluginLabel,
submenu: [
pluginEnabledMenu(pluginName, 'Enabled', true, innerRefreshMenu),
{ type: 'separator' },
...getPluginMenu(win, config.plugins.getOptions(pluginName), innerRefreshMenu),
],
} satisfies Electron.MenuItemConstructorOptions;
}
return pluginEnabledMenu(pluginName, pluginLabel);
}),
},
{
label: 'Options',
submenu: [
{
label: 'Auto-update',
type: 'checkbox',
checked: config.get('options.autoUpdates'),
click(item) {
config.setMenuOption('options.autoUpdates', item.checked);
},
},
{
label: 'Resume last song when app starts',
type: 'checkbox',
checked: config.get('options.resumeOnStart'),
click(item) {
config.setMenuOption('options.resumeOnStart', item.checked);
},
},
{
label: 'Starting page',
submenu: (() => {
const subMenuArray: Electron.MenuItemConstructorOptions[] = Object.keys(startingPages).map((name) => ({
label: name,
type: 'radio',
checked: config.get('options.startingPage') === name,
click() {
config.set('options.startingPage', name);
},
}));
subMenuArray.unshift({
label: 'Unset',
type: 'radio',
checked: config.get('options.startingPage') === '',
click() {
config.set('options.startingPage', '');
},
});
return subMenuArray;
})(),
},
{
label: 'Visual Tweaks',
submenu: [
{
label: 'Remove upgrade button',
type: 'checkbox',
checked: config.get('options.removeUpgradeButton'),
click(item) {
config.setMenuOption('options.removeUpgradeButton', item.checked);
},
},
{
label: 'Like buttons',
submenu: [
{
label: 'Default',
type: 'radio',
checked: !config.get('options.likeButtons'),
click() {
config.set('options.likeButtons', '');
},
},
{
label: 'Force show',
type: 'radio',
checked: config.get('options.likeButtons') === 'force',
click() {
config.set('options.likeButtons', 'force');
},
},
{
label: 'Hide',
type: 'radio',
checked: config.get('options.likeButtons') === 'hide',
click() {
config.set('options.likeButtons', 'hide');
},
},
],
},
{
label: 'Theme',
submenu: [
{
label: 'No theme',
type: 'radio',
checked: config.get('options.themes')?.length === 0, // Todo rename "themes"
click() {
config.set('options.themes', []);
},
},
{ type: 'separator' },
{
label: 'Import custom CSS file',
type: 'normal',
async click() {
const { filePaths } = await dialog.showOpenDialog({
filters: [{ name: 'CSS Files', extensions: ['css'] }],
properties: ['openFile', 'multiSelections'],
});
if (filePaths) {
config.set('options.themes', filePaths);
}
},
},
],
},
],
},
{
label: 'Single instance lock',
type: 'checkbox',
checked: true,
click(item) {
if (!item.checked && app.hasSingleInstanceLock()) {
app.releaseSingleInstanceLock();
} else if (item.checked && !app.hasSingleInstanceLock()) {
app.requestSingleInstanceLock();
}
},
},
{
label: 'Always on top',
type: 'checkbox',
checked: config.get('options.alwaysOnTop'),
click(item) {
config.setMenuOption('options.alwaysOnTop', item.checked);
win.setAlwaysOnTop(item.checked);
},
},
...(is.windows() || is.linux()
? [
{
label: 'Hide menu',
type: 'checkbox',
checked: config.get('options.hideMenu'),
click(item) {
config.setMenuOption('options.hideMenu', item.checked);
if (item.checked && !config.get('options.hideMenuWarned')) {
dialog.showMessageBox(win, {
type: 'info', title: 'Hide Menu Enabled',
message: 'Menu will be hidden on next launch, use [Alt] to show it (or backtick [`] if using in-app-menu)',
});
}
},
},
]
: []) satisfies Electron.MenuItemConstructorOptions[],
...(is.windows() || is.macOS()
? // Only works on Win/Mac
// https://www.electronjs.org/docs/api/app#appsetloginitemsettingssettings-macos-windows
[
{
label: 'Start at login',
type: 'checkbox',
checked: config.get('options.startAtLogin'),
click(item) {
config.setMenuOption('options.startAtLogin', item.checked);
},
},
]
: []) satisfies Electron.MenuItemConstructorOptions[],
{
label: 'Tray',
submenu: [
{
label: 'Disabled',
type: 'radio',
checked: !config.get('options.tray'),
click() {
config.setMenuOption('options.tray', false);
config.setMenuOption('options.appVisible', true);
},
},
{
label: 'Enabled + app visible',
type: 'radio',
checked: config.get('options.tray') && config.get('options.appVisible'),
click() {
config.setMenuOption('options.tray', true);
config.setMenuOption('options.appVisible', true);
},
},
{
label: 'Enabled + app hidden',
type: 'radio',
checked: config.get('options.tray') && !config.get('options.appVisible'),
click() {
config.setMenuOption('options.tray', true);
config.setMenuOption('options.appVisible', false);
},
},
{ type: 'separator' },
{
label: 'Play/Pause on click',
type: 'checkbox',
checked: config.get('options.trayClickPlayPause'),
click(item) {
config.setMenuOption('options.trayClickPlayPause', item.checked);
},
},
],
},
{ type: 'separator' },
{
label: 'Advanced options',
submenu: [
{
label: 'Set Proxy',
type: 'normal',
async click(item) {
await setProxy(item, win);
},
},
{
label: 'Override useragent',
type: 'checkbox',
checked: config.get('options.overrideUserAgent'),
click(item) {
config.setMenuOption('options.overrideUserAgent', item.checked);
},
},
{
label: 'Disable hardware acceleration',
type: 'checkbox',
checked: config.get('options.disableHardwareAcceleration'),
click(item) {
config.setMenuOption('options.disableHardwareAcceleration', item.checked);
},
},
{
label: 'Restart on config changes',
type: 'checkbox',
checked: config.get('options.restartOnConfigChanges'),
click(item) {
config.setMenuOption('options.restartOnConfigChanges', item.checked);
},
},
{
label: 'Reset App cache when app starts',
type: 'checkbox',
checked: config.get('options.autoResetAppCache'),
click(item) {
config.setMenuOption('options.autoResetAppCache', item.checked);
},
},
{ type: 'separator' },
is.macOS()
? {
label: 'Toggle DevTools',
// Cannot use "toggleDevTools" role in macOS
click() {
const { webContents } = win;
if (webContents.isDevToolsOpened()) {
webContents.closeDevTools();
} else {
webContents.openDevTools();
}
},
}
: { role: 'toggleDevTools' },
{
label: 'Edit config.json',
click() {
config.edit();
},
},
],
},
],
},
{
label: 'View',
submenu: [
{ role: 'reload' },
{ role: 'forceReload' },
{ type: 'separator' },
{ role: 'zoomIn', accelerator: process.platform === 'darwin' ? 'Cmd+I' : 'Ctrl+I' },
{ role: 'zoomOut', accelerator: process.platform === 'darwin' ? 'Cmd+O' : 'Ctrl+O' },
{ role: 'resetZoom' },
{ type: 'separator' },
{ role: 'togglefullscreen' },
],
},
{
label: 'Navigation',
submenu: [
{
label: 'Go back',
click() {
if (win.webContents.canGoBack()) {
win.webContents.goBack();
}
},
},
{
label: 'Go forward',
click() {
if (win.webContents.canGoForward()) {
win.webContents.goForward();
}
},
},
{
label: 'Copy current URL',
click() {
const currentURL = win.webContents.getURL();
clipboard.writeText(currentURL);
},
},
{
label: 'Restart App',
click: restart,
},
{ role: 'quit' },
],
},
{
label: 'About',
submenu: [
{ role: 'about' },
],
}
];
};
export const setApplicationMenu = (win: Electron.BrowserWindow) => {
const menuTemplate: MenuTemplate = [...mainMenuTemplate(win)];
if (process.platform === 'darwin') {
const { name } = app;
menuTemplate.unshift({
label: name,
submenu: [
{ role: 'about' },
{ type: 'separator' },
{ role: 'hide' },
{ role: 'hideOthers' },
{ role: 'unhide' },
{ type: 'separator' },
{ role: 'selectAll' },
{ role: 'cut' },
{ role: 'copy' },
{ role: 'paste' },
{ type: 'separator' },
{ role: 'minimize' },
{ role: 'close' },
{ role: 'quit' },
],
});
}
const menu = Menu.buildFromTemplate(menuTemplate);
Menu.setApplicationMenu(menu);
};
async function setProxy(item: Electron.MenuItem, win: BrowserWindow) {
const output = await prompt({
title: 'Set Proxy',
label: 'Enter Proxy Address: (leave empty to disable)',
value: config.get('options.proxy'),
type: 'input',
inputAttrs: {
type: 'url',
placeholder: "Example: 'socks5://127.0.0.1:9999",
},
width: 450,
...promptOptions(),
}, win);
if (typeof output === 'string') {
config.setMenuOption('options.proxy', output);
item.checked = output !== '';
} else { // User pressed cancel
item.checked = !item.checked; // Reset checkbox
}
}

88
src/navigation.d.ts vendored Normal file
View File

@ -0,0 +1,88 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
interface NavigationOptions {
info: any;
}
interface NavigationHistoryEntry extends EventTarget {
readonly url?: string;
readonly key: string;
readonly id: string;
readonly index: number;
readonly sameDocument: boolean;
getState(): any;
ondispose: ((this: NavigationHistoryEntry, ev: Event) => any) | null;
}
interface NavigationTransition {
readonly navigationType: NavigationType;
readonly from: NavigationHistoryEntry;
readonly finished: Promise<undefined>;
}
interface NavigationResult {
committed: Promise<NavigationHistoryEntry>;
finished: Promise<NavigationHistoryEntry>;
}
interface NavigationNavigateOptions extends NavigationOptions {
state: any;
history?: NavigationHistoryBehavior;
}
interface NavigationReloadOptions extends NavigationOptions {
state: any;
}
interface NavigationUpdateCurrentEntryOptions {
state: any;
}
interface NavigationEventsMap {
currententrychange: NavigateEvent;
navigate: NavigateEvent;
navigateerror: NavigateEvent;
navigatesuccess: NavigateEvent;
}
interface Navigation extends EventTarget {
entries(): Array<NavigationHistoryEntry>;
readonly currentEntry?: NavigationHistoryEntry;
updateCurrentEntry(options: NavigationUpdateCurrentEntryOptions): undefined;
readonly transition?: NavigationTransition;
readonly canGoBack: boolean;
readonly canGoForward: boolean;
navigate(url: string, options?: NavigationNavigateOptions): NavigationResult;
reload(options?: NavigationReloadOptions): NavigationResult;
traverseTo(key: string, options?: NavigationOptions): NavigationResult;
back(options?: NavigationOptions): NavigationResult;
forward(options?: NavigationOptions): NavigationResult;
onnavigate: ((this: Navigation, ev: Event) => any) | null;
onnavigatesuccess: ((this: Navigation, ev: Event) => any) | null;
onnavigateerror: ((this: Navigation, ev: Event) => any) | null;
oncurrententrychange: ((this: Navigation, ev: Event) => any) | null;
addEventListener<K extends keyof NavigationEventsMap>(name: K, listener: (event: NavigationEventsMap[K]) => void);
}
declare class NavigateEvent extends Event {
canIntercept: boolean;
destination: NavigationHistoryEntry;
downloadRequest: string | null;
formData: FormData;
hashChange: boolean;
info: Record<string, string>;
navigationType: 'push' | 'reload' | 'replace' | 'traverse';
signal: AbortSignal;
userInitiated: boolean;
intercept(options?: Record<string, unknown>): void;
scroll(): void;
}
type NavigationHistoryBehavior = 'auto' | 'push' | 'replace';
declare const Navigation: {
prototype: Navigation;
new(): Navigation;
};

1
src/plugins/adblocker/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/ad-blocker-engine.bin

View File

@ -0,0 +1,19 @@
import { BrowserWindow } from 'electron';
import { loadAdBlockerEngine } from './blocker';
import { shouldUseBlocklists } from './config';
import type { ConfigType } from '../../config/dynamic';
type AdBlockOptions = ConfigType<'adblocker'>;
export default async (win: BrowserWindow, options: AdBlockOptions) => {
if (shouldUseBlocklists()) {
await loadAdBlockerEngine(
win.webContents.session,
options.cache,
options.additionalBlockLists,
options.disableDefaultLists,
);
}
};

View File

@ -0,0 +1,4 @@
export const blockers = {
WithBlocklists: 'With blocklists',
InPlayer: 'In player',
} as const;

View File

@ -0,0 +1,67 @@
// Used for caching
import path from 'node:path';
import fs, { promises } from 'node:fs';
import { ElectronBlocker } from '@cliqz/adblocker-electron';
import { app, net } from 'electron';
const SOURCES = [
'https://raw.githubusercontent.com/kbinani/adblock-youtube-ads/master/signed.txt',
// UBlock Origin
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt',
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2020.txt',
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2021.txt',
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2022.txt',
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2023.txt',
// Fanboy Annoyances
'https://secure.fanboy.co.nz/fanboy-annoyance_ubo.txt',
];
export const loadAdBlockerEngine = async (
session: Electron.Session | undefined = undefined,
cache = true,
additionalBlockLists = [],
disableDefaultLists: boolean | unknown[] = false,
) => {
// Only use cache if no additional blocklists are passed
const cacheDirectory = path.join(app.getPath('userData'), 'adblock_cache');
if (!fs.existsSync(cacheDirectory)) {
fs.mkdirSync(cacheDirectory);
}
const cachingOptions
= cache && additionalBlockLists.length === 0
? {
path: path.join(cacheDirectory, 'adblocker-engine.bin'),
read: promises.readFile,
write: promises.writeFile,
}
: undefined;
const lists = [
...(
(disableDefaultLists && !Array.isArray(disableDefaultLists)) ||
(Array.isArray(disableDefaultLists) && disableDefaultLists.length > 0) ? [] : SOURCES
),
...additionalBlockLists,
];
try {
const blocker = await ElectronBlocker.fromLists(
(url: string) => net.fetch(url),
lists,
{
// When generating the engine for caching, do not load network filters
// So that enhancing the session works as expected
// Allowing to define multiple webRequest listeners
loadNetworkFilters: session !== undefined,
},
cachingOptions,
);
if (session) {
blocker.enableBlockingInSession(session);
}
} catch (error) {
console.log('Error loading adBlocker engine', error);
}
};
export default { loadAdBlockerEngine };

View File

@ -0,0 +1,15 @@
/* eslint-disable @typescript-eslint/await-thenable */
/* renderer */
import { blockers } from './blocker-types';
import { PluginConfig } from '../../config/dynamic';
const config = new PluginConfig('adblocker', { enableFront: true });
export const shouldUseBlocklists = () => config.get('blocker') !== blockers.InPlayer;
export default Object.assign(config, {
shouldUseBlocklists,
blockers,
});

View File

@ -0,0 +1,3 @@
export default async () => {
await import('@cliqz/adblocker-electron-preload');
};

3
src/plugins/adblocker/inject.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
const inject: () => void;
export default inject;

View File

@ -0,0 +1,435 @@
/* eslint-disable */
// Source: https://addons.mozilla.org/en-US/firefox/addon/adblock-for-youtube/
// https://robwu.nl/crxviewer/?crx=https%3A%2F%2Faddons.mozilla.org%2Fen-US%2Ffirefox%2Faddon%2Fadblock-for-youtube%2F
/*
Parts of this code is derived from set-constant.js:
https://github.com/gorhill/uBlock/blob/5de0ce975753b7565759ac40983d31978d1f84ca/assets/resources/scriptlets.js#L704
*/
module.exports = () => {
{
const pruner = function (o) {
delete o.playerAds;
delete o.adPlacements;
//
if (o.playerResponse) {
delete o.playerResponse.playerAds;
delete o.playerResponse.adPlacements;
}
//
return o;
};
JSON.parse = new Proxy(JSON.parse, {
apply() {
return pruner(Reflect.apply(...arguments));
},
});
Response.prototype.json = new Proxy(Response.prototype.json, {
apply() {
return Reflect.apply(...arguments).then((o) => pruner(o));
},
});
}
(function () {
let cValue = 'undefined';
const chain = 'playerResponse.adPlacements';
const thisScript = document.currentScript;
//
switch (cValue) {
case 'null': {
cValue = null;
break;
}
case "''": {
cValue = '';
break;
}
case 'true': {
cValue = true;
break;
}
case 'false': {
cValue = false;
break;
}
case 'undefined': {
cValue = undefined;
break;
}
case 'noopFunc': {
cValue = function () {
};
break;
}
case 'trueFunc': {
cValue = function () {
return true;
};
break;
}
case 'falseFunc': {
cValue = function () {
return false;
};
break;
}
default: {
if (/^\d+$/.test(cValue)) {
cValue = Number.parseFloat(cValue);
//
if (isNaN(cValue)) {
return;
}
if (Math.abs(cValue) > 0x7F_FF) {
return;
}
} else {
return;
}
}
}
//
let aborted = false;
const mustAbort = function (v) {
if (aborted) {
return true;
}
aborted
= v !== undefined
&& v !== null
&& cValue !== undefined
&& cValue !== null
&& typeof v !== typeof cValue;
return aborted;
};
/*
Support multiple trappers for the same property:
https://github.com/uBlockOrigin/uBlock-issues/issues/156
*/
const trapProp = function (owner, prop, configurable, handler) {
if (handler.init(owner[prop]) === false) {
return;
}
//
const odesc = Object.getOwnPropertyDescriptor(owner, prop);
let previousGetter;
let previousSetter;
if (odesc instanceof Object) {
if (odesc.configurable === false) {
return;
}
if (odesc.get instanceof Function) {
previousGetter = odesc.get;
}
if (odesc.set instanceof Function) {
previousSetter = odesc.set;
}
}
//
Object.defineProperty(owner, prop, {
configurable,
get() {
if (previousGetter !== undefined) {
previousGetter();
}
//
return handler.getter();
},
set(a) {
if (previousSetter !== undefined) {
previousSetter(a);
}
//
handler.setter(a);
},
});
};
const trapChain = function (owner, chain) {
const pos = chain.indexOf('.');
if (pos === -1) {
trapProp(owner, chain, false, {
v: undefined,
getter() {
return document.currentScript === thisScript ? this.v : cValue;
},
setter(a) {
if (mustAbort(a) === false) {
return;
}
cValue = a;
},
init(v) {
if (mustAbort(v)) {
return false;
}
//
this.v = v;
return true;
},
});
//
return;
}
//
const prop = chain.slice(0, pos);
const v = owner[prop];
//
chain = chain.slice(pos + 1);
if (v instanceof Object || (typeof v === 'object' && v !== null)) {
trapChain(v, chain);
return;
}
//
trapProp(owner, prop, true, {
v: undefined,
getter() {
return this.v;
},
setter(a) {
this.v = a;
if (a instanceof Object) {
trapChain(a, chain);
}
},
init(v) {
this.v = v;
return true;
},
});
};
//
trapChain(window, chain);
})();
(function () {
let cValue = 'undefined';
const thisScript = document.currentScript;
const chain = 'ytInitialPlayerResponse.adPlacements';
//
switch (cValue) {
case 'null': {
cValue = null;
break;
}
case "''": {
cValue = '';
break;
}
case 'true': {
cValue = true;
break;
}
case 'false': {
cValue = false;
break;
}
case 'undefined': {
cValue = undefined;
break;
}
case 'noopFunc': {
cValue = function () {
};
break;
}
case 'trueFunc': {
cValue = function () {
return true;
};
break;
}
case 'falseFunc': {
cValue = function () {
return false;
};
break;
}
default: {
if (/^\d+$/.test(cValue)) {
cValue = Number.parseFloat(cValue);
//
if (isNaN(cValue)) {
return;
}
if (Math.abs(cValue) > 0x7F_FF) {
return;
}
} else {
return;
}
}
}
//
let aborted = false;
const mustAbort = function (v) {
if (aborted) {
return true;
}
aborted
= v !== undefined
&& v !== null
&& cValue !== undefined
&& cValue !== null
&& typeof v !== typeof cValue;
return aborted;
};
/*
Support multiple trappers for the same property:
https://github.com/uBlockOrigin/uBlock-issues/issues/156
*/
const trapProp = function (owner, prop, configurable, handler) {
if (handler.init(owner[prop]) === false) {
return;
}
//
const odesc = Object.getOwnPropertyDescriptor(owner, prop);
let previousGetter;
let previousSetter;
if (odesc instanceof Object) {
if (odesc.configurable === false) {
return;
}
if (odesc.get instanceof Function) {
previousGetter = odesc.get;
}
if (odesc.set instanceof Function) {
previousSetter = odesc.set;
}
}
//
Object.defineProperty(owner, prop, {
configurable,
get() {
if (previousGetter !== undefined) {
previousGetter();
}
//
return handler.getter();
},
set(a) {
if (previousSetter !== undefined) {
previousSetter(a);
}
//
handler.setter(a);
},
});
};
const trapChain = function (owner, chain) {
const pos = chain.indexOf('.');
if (pos === -1) {
trapProp(owner, chain, false, {
v: undefined,
getter() {
return document.currentScript === thisScript ? this.v : cValue;
},
setter(a) {
if (mustAbort(a) === false) {
return;
}
cValue = a;
},
init(v) {
if (mustAbort(v)) {
return false;
}
//
this.v = v;
return true;
},
});
//
return;
}
//
const prop = chain.slice(0, pos);
const v = owner[prop];
//
chain = chain.slice(pos + 1);
if (v instanceof Object || (typeof v === 'object' && v !== null)) {
trapChain(v, chain);
return;
}
//
trapProp(owner, prop, true, {
v: undefined,
getter() {
return this.v;
},
setter(a) {
this.v = a;
if (a instanceof Object) {
trapChain(a, chain);
}
},
init(v) {
this.v = v;
return true;
},
});
};
//
trapChain(window, chain);
})();
};

View File

@ -0,0 +1,21 @@
import config from './config';
import { blockers } from './blocker-types';
import { MenuTemplate } from '../../menu';
export default (): MenuTemplate => {
return [
{
label: 'Blocker',
submenu: Object.values(blockers).map((blocker: string) => ({
label: blocker,
type: 'radio',
checked: (config.get('blocker') || blockers.WithBlocklists) === blocker,
click() {
config.set('blocker', blocker);
},
})),
},
];
};

View File

@ -0,0 +1,15 @@
import config, { shouldUseBlocklists } from './config';
import inject from './inject';
import injectCliqzPreload from './inject-cliqz-preload';
import { blockers } from './blocker-types';
export default async () => {
if (shouldUseBlocklists()) {
// Preload adblocker to inject scripts/styles
await injectCliqzPreload();
// eslint-disable-next-line @typescript-eslint/await-thenable
} else if ((config.get('blocker')) === blockers.InPlayer) {
inject();
}
};

View File

@ -0,0 +1,9 @@
import { BrowserWindow } from 'electron';
import style from './style.css';
import { injectCSS } from '../utils';
export default (win: BrowserWindow) => {
injectCSS(win.webContents, style);
};

View File

@ -0,0 +1,127 @@
import { FastAverageColor } from 'fast-average-color';
import { ConfigType } from '../../config/dynamic';
function hexToHSL(H: string) {
// Convert hex to RGB first
let r = 0;
let g = 0;
let b = 0;
if (H.length == 4) {
r = Number('0x' + H[1] + H[1]);
g = Number('0x' + H[2] + H[2]);
b = Number('0x' + H[3] + H[3]);
} else if (H.length == 7) {
r = Number('0x' + H[1] + H[2]);
g = Number('0x' + H[3] + H[4]);
b = Number('0x' + H[5] + H[6]);
}
// Then to HSL
r /= 255;
g /= 255;
b /= 255;
const cmin = Math.min(r, g, b);
const cmax = Math.max(r, g, b);
const delta = cmax - cmin;
let h: number;
let s: number;
let l: number;
if (delta == 0) {
h = 0;
} else if (cmax == r) {
h = ((g - b) / delta) % 6;
} else if (cmax == g) {
h = ((b - r) / delta) + 2;
} else {
h = ((r - g) / delta) + 4;
}
h = Math.round(h * 60);
if (h < 0) {
h += 360;
}
l = (cmax + cmin) / 2;
s = delta == 0 ? 0 : delta / (1 - Math.abs((2 * l) - 1));
s = +(s * 100).toFixed(1);
l = +(l * 100).toFixed(1);
//return "hsl(" + h + "," + s + "%," + l + "%)";
return [h,s,l];
}
let hue = 0;
let saturation = 0;
let lightness = 0;
function changeElementColor(element: HTMLElement | null, hue: number, saturation: number, lightness: number){
if (element) {
element.style.backgroundColor = `hsl(${hue}, ${saturation}%, ${lightness}%)`;
}
}
export default (_: ConfigType<'album-color-theme'>) => {
// updated elements
const playerPage = document.querySelector<HTMLElement>('#player-page');
const navBarBackground = document.querySelector<HTMLElement>('#nav-bar-background');
const ytmusicPlayerBar = document.querySelector<HTMLElement>('ytmusic-player-bar');
const playerBarBackground = document.querySelector<HTMLElement>('#player-bar-background');
const sidebarBig = document.querySelector<HTMLElement>('#guide-wrapper');
const sidebarSmall = document.querySelector<HTMLElement>('#mini-guide-background');
const ytmusicAppLayout = document.querySelector<HTMLElement>('#layout');
const observer = new MutationObserver((mutationsList) => {
for (const mutation of mutationsList) {
if (mutation.type === 'attributes') {
const isPageOpen = ytmusicAppLayout?.hasAttribute('player-page-open');
if (isPageOpen) {
changeElementColor(sidebarSmall, hue, saturation, lightness - 30);
} else {
if (sidebarSmall) {
sidebarSmall.style.backgroundColor = 'black';
}
}
}
}
});
if (playerPage) {
observer.observe(playerPage, { attributes: true });
}
document.addEventListener('apiLoaded', (apiEvent) => {
const fastAverageColor = new FastAverageColor();
apiEvent.detail.addEventListener('videodatachange', (name: string) => {
if (name === 'dataloaded') {
const playerResponse = apiEvent.detail.getPlayerResponse();
const thumbnail = playerResponse?.videoDetails?.thumbnail?.thumbnails?.at(0);
if (thumbnail) {
fastAverageColor.getColorAsync(thumbnail.url)
.then((albumColor) => {
if (albumColor) {
[hue, saturation, lightness] = hexToHSL(albumColor.hex);
changeElementColor(playerPage, hue, saturation, lightness - 30);
changeElementColor(navBarBackground, hue, saturation, lightness - 15);
changeElementColor(ytmusicPlayerBar, hue, saturation, lightness - 15);
changeElementColor(playerBarBackground, hue, saturation, lightness - 15);
changeElementColor(sidebarBig, hue, saturation, lightness - 15);
if (ytmusicAppLayout?.hasAttribute('player-page-open')) {
changeElementColor(sidebarSmall, hue, saturation, lightness - 30);
}
const ytRightClickList = document.querySelector<HTMLElement>('tp-yt-paper-listbox');
changeElementColor(ytRightClickList, hue, saturation, lightness - 15);
} else {
if (playerPage) {
playerPage.style.backgroundColor = '#000000';
}
}
})
.catch((e) => console.error(e));
}
}
});
});
};

Some files were not shown because too many files have changed in this diff Show More