Compare commits
50 Commits
v3.11.0
...
bcb61a922e
| Author | SHA1 | Date | |
|---|---|---|---|
| bcb61a922e | |||
| c046a76972 | |||
| ed25d11b23 | |||
| 8de5599240 | |||
| ce7fcc5d01 | |||
| 30ed2b5c75 | |||
| 12d4241668 | |||
| 0eb65f082c | |||
| 25fccc9a62 | |||
| 414a560205 | |||
| 7c1b8ed0a4 | |||
| 8084a175cf | |||
| f5175a6be7 | |||
| c9ae7cb277 | |||
| e455932754 | |||
| a1e3bf23be | |||
| 8ccd510700 | |||
| c0a495640f | |||
| 6060e138ee | |||
| 98b2e182fb | |||
| 715ddb8923 | |||
| 3104111f6b | |||
| e064c37859 | |||
| 1de223b4ca | |||
| 50a1365a6f | |||
| cc83804491 | |||
| 92cf306439 | |||
| a8be510a07 | |||
| 58524fb3c1 | |||
| aeb6997117 | |||
| 0116188623 | |||
| af63edb058 | |||
| bd0ac52832 | |||
| 5b537d2a9e | |||
| d9a7c352d3 | |||
| 84add37441 | |||
| 9a88f11f16 | |||
| 51b4441e5c | |||
| 29784e6a39 | |||
| e2981c22fa | |||
| d7513dcc20 | |||
| 5c0face2c9 | |||
| a1805f7662 | |||
| 46889098e8 | |||
| 607938c170 | |||
| 58a03db898 | |||
| 67ef3408dc | |||
| 27f16e26b3 | |||
| e38200bc1f | |||
| 736e63d259 |
136
README.md
@ -1,6 +1,6 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
# YouTube Music
|
# YTMD
|
||||||
|
|
||||||
[](https://github.com/th-ch/youtube-music/releases/)
|
[](https://github.com/th-ch/youtube-music/releases/)
|
||||||
[](https://github.com/th-ch/youtube-music/blob/master/license)
|
[](https://github.com/th-ch/youtube-music/blob/master/license)
|
||||||
@ -14,31 +14,12 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
- Native look & feel extension, aims at keeping the original interface
|
||||||
<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>
|
|
||||||
|
|
||||||
Read this in other languages: [한국어](./docs/readme/README-ko.md), [Française](./docs/readme/README-fr.md), [Íslenska](./docs/readme/README-is.md), [Español](./docs/readme/README-es.md), [Pусский](./docs/readme/README-ru.md), [Українська](./docs/readme/README-uk.md), [Magyar](./docs/readme/README-hu.md), [Português](./docs/readme/README-pt.md), [日本語](./docs/readme/README-ja.md)
|
|
||||||
|
|
||||||
**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
|
one click
|
||||||
|
|
||||||
## Demo Image
|
|
||||||
|
|
||||||
| Player Screen (album color theme & ambient light) |
|
|
||||||
|:---------------------------------------------------------------------------------------------------------:|
|
|
||||||
||
|
|
||||||
|
|
||||||
## Content
|
## Content
|
||||||
|
|
||||||
- [Features](#features)
|
- [Features](#features)
|
||||||
- [Available plugins](#available-plugins)
|
|
||||||
- [Translation](#translation)
|
- [Translation](#translation)
|
||||||
- [Download](#download)
|
- [Download](#download)
|
||||||
- [Arch Linux](#arch-linux)
|
- [Arch Linux](#arch-linux)
|
||||||
@ -56,116 +37,6 @@ Read this in other languages: [한국어](./docs/readme/README-ko.md), [Françai
|
|||||||
- [License](#license)
|
- [License](#license)
|
||||||
- [FAQ](#faq)
|
- [FAQ](#faq)
|
||||||
|
|
||||||
## Features:
|
|
||||||
|
|
||||||
- **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
|
|
||||||
|
|
||||||
- And more ...
|
|
||||||
|
|
||||||
## Available plugins:
|
|
||||||
|
|
||||||
- **Ad Blocker**: Block all ads and tracking out of the box
|
|
||||||
|
|
||||||
- **Album Actions**: Adds Undislike, Dislike, Like, and Unlike buttons to apply this to all songs in a playlist or album
|
|
||||||
|
|
||||||
- **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 screen’s 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 Navigation 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/) Rich Presence**: 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)
|
|
||||||
|
|
||||||
- **Equalizer**: add filters to boost or cut specific range of frequencies (e.g. bass booster)
|
|
||||||
|
|
||||||
- **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)
|
|
||||||
|
|
||||||
- **Scrobbler**: Adds scrobbling support for [Last.fm](https://www.last.fm/) and [ListenBrainz](https://listenbrainz.org/)
|
|
||||||
|
|
||||||
- **Lumia Stream**: Adds [Lumia Stream](https://lumiastream.com/) support
|
|
||||||
|
|
||||||
- **Lyrics Genius**: Adds lyrics support for most songs
|
|
||||||
|
|
||||||
- **Music Together**: Share a playlist with others. When the host plays a song, everyone else will hear the same song
|
|
||||||
|
|
||||||
- **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
|
|
||||||
|
|
||||||
- **Shortcuts (& MPRIS)**: 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 Disliked Song**: Skips disliked songs
|
|
||||||
|
|
||||||
- **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
|
|
||||||
|
|
||||||
- **Synced Lyrics**: Provides synced lyrics to songs, using providers like [LRClib](https://lrclib.net).
|
|
||||||
|
|
||||||
- **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/)
|
|
||||||
|
|
||||||
- **Unobtrusive Player**: Prevents the player from popping up when playing a song
|
|
||||||
|
|
||||||
- **Video 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
|
|
||||||
|
|
||||||
- **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
|
|
||||||
|
|
||||||
|
|
||||||
## Translation
|
## Translation
|
||||||
|
|
||||||
You can help with translation on [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
|
You can help with translation on [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
|
||||||
@ -355,8 +226,7 @@ export default createPlugin({
|
|||||||
enabled: false,
|
enabled: false,
|
||||||
}, // your custom config
|
}, // your custom config
|
||||||
renderer() {
|
renderer() {
|
||||||
// Remove the login button
|
console.log('hello from renderer');
|
||||||
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
|
|
||||||
} // define renderer hook
|
} // define renderer hook
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 600 B |
|
Before Width: | Height: | Size: 931 B |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 353 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 40 KiB |
@ -1,6 +0,0 @@
|
|||||||
<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>
|
|
||||||
|
Before Width: | Height: | Size: 353 B |
88
changelog.md
@ -2,8 +2,96 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
||||||
|
|
||||||
|
#### [v3.11.0](https://github.com/th-ch/youtube-music/compare/v3.10.0...v3.11.0)
|
||||||
|
|
||||||
|
- Fixed missing videochange dataupdated event when using shuffle [`#3659`](https://github.com/th-ch/youtube-music/pull/3659)
|
||||||
|
- feat(synced-lyrics): preferred provider (global/per-song) [`#3741`](https://github.com/th-ch/youtube-music/pull/3741)
|
||||||
|
- feat(api-server): send shuffle state over websocket [`#3837`](https://github.com/th-ch/youtube-music/pull/3837)
|
||||||
|
- feat(synced-lyrics): add new "spacer" [`#3742`](https://github.com/th-ch/youtube-music/pull/3742)
|
||||||
|
- feat(downloader): Add context menu button for playlists and albums [`#3768`](https://github.com/th-ch/youtube-music/pull/3768)
|
||||||
|
- feat(transparent-player): new plugin for Acrylic, Mica or Tabbed effects [`#3529`](https://github.com/th-ch/youtube-music/pull/3529)
|
||||||
|
- fix(audio-compressor): real-time behavior and duplicated audio bug [`#3786`](https://github.com/th-ch/youtube-music/pull/3786)
|
||||||
|
- fix: Added Min height and width to the window which doesnt breaks the UI responsiveness [`#3602`](https://github.com/th-ch/youtube-music/pull/3602)
|
||||||
|
- chore(deps): update dependency discord-api-types to v0.38.23 [`#3833`](https://github.com/th-ch/youtube-music/pull/3833)
|
||||||
|
- feat(plugin): Custom output device plugin [`#3789`](https://github.com/th-ch/youtube-music/pull/3789)
|
||||||
|
- chore(deps): update dependency @babel/runtime to v7.28.4 [`#3831`](https://github.com/th-ch/youtube-music/pull/3831)
|
||||||
|
- chore(deps): update eslint monorepo to v9.35.0 [`#3829`](https://github.com/th-ch/youtube-music/pull/3829)
|
||||||
|
- feat(api-server): Add websocket as `/api/v1/ws` route [`#3707`](https://github.com/th-ch/youtube-music/pull/3707)
|
||||||
|
- feat(api-server): Improved api-server volume and like/dislike state [`#3592`](https://github.com/th-ch/youtube-music/pull/3592)
|
||||||
|
- fix(deps): update dependency i18next to v25.5.2 [`#3826`](https://github.com/th-ch/youtube-music/pull/3826)
|
||||||
|
- fix(deps): update dependency virtua to v0.42.2 [`#3827`](https://github.com/th-ch/youtube-music/pull/3827)
|
||||||
|
- fix(exponential-volume): volume desync bug [`#3787`](https://github.com/th-ch/youtube-music/pull/3787)
|
||||||
|
- feat(synced-lyrics): thai romanization [`#3618`](https://github.com/th-ch/youtube-music/pull/3618)
|
||||||
|
- feat(discord): add option to display artist/title in status [`#3692`](https://github.com/th-ch/youtube-music/pull/3692)
|
||||||
|
- chore(deps): update playwright monorepo to v1.55.0 [`#3819`](https://github.com/th-ch/youtube-music/pull/3819)
|
||||||
|
- fix(deps): update dependency i18next to v25.5.1 [`#3820`](https://github.com/th-ch/youtube-music/pull/3820)
|
||||||
|
- fix(deps): update dependency virtua to v0.42.0 [`#3821`](https://github.com/th-ch/youtube-music/pull/3821)
|
||||||
|
- fix(deps): update dependency zod to v4.1.5 [`#3822`](https://github.com/th-ch/youtube-music/pull/3822)
|
||||||
|
- chore(deps): update eslint monorepo to v9.34.0 [`#3818`](https://github.com/th-ch/youtube-music/pull/3818)
|
||||||
|
- chore(deps): update actions/setup-node action to v5 [`#3823`](https://github.com/th-ch/youtube-music/pull/3823)
|
||||||
|
- chore(deps): update dependency electron to v38 [`#3824`](https://github.com/th-ch/youtube-music/pull/3824)
|
||||||
|
- chore(deps): update dependency @stylistic/eslint-plugin to v5.3.1 [`#3817`](https://github.com/th-ch/youtube-music/pull/3817)
|
||||||
|
- fix(deps): update dependency serve to v14.2.5 [`#3816`](https://github.com/th-ch/youtube-music/pull/3816)
|
||||||
|
- feat(discord): add song & artist URLs to rich presence [`#3737`](https://github.com/th-ch/youtube-music/pull/3737)
|
||||||
|
- fix: fix #3621 [`#3774`](https://github.com/th-ch/youtube-music/pull/3774)
|
||||||
|
- feat(refactor): PluginDefinition::platform [`#3665`](https://github.com/th-ch/youtube-music/pull/3665)
|
||||||
|
- chore(docs): update copyright footer year [`#3792`](https://github.com/th-ch/youtube-music/pull/3792)
|
||||||
|
- chore(deps): update dependency vite-plugin-inspect to v11.3.3 [`#3814`](https://github.com/th-ch/youtube-music/pull/3814)
|
||||||
|
- fix(deps): update dependency @floating-ui/dom to v1.7.4 [`#3815`](https://github.com/th-ch/youtube-music/pull/3815)
|
||||||
|
- fix(deps): update dependency @ghostery/adblocker-electron to v2.11.6 [`#3770`](https://github.com/th-ch/youtube-music/pull/3770)
|
||||||
|
- chore(deps): update dependency discord-api-types to v0.38.22 [`#3813`](https://github.com/th-ch/youtube-music/pull/3813)
|
||||||
|
- chore(deps): update dependency @types/semver to v7.7.1 [`#3812`](https://github.com/th-ch/youtube-music/pull/3812)
|
||||||
|
- fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.11.6 [`#3771`](https://github.com/th-ch/youtube-music/pull/3771)
|
||||||
|
- fix(deps): update dependency @hono/node-server to v1.19.1 [`#3759`](https://github.com/th-ch/youtube-music/pull/3759)
|
||||||
|
- chore(deps): update dependency typescript-eslint to v8.42.0 [`#3761`](https://github.com/th-ch/youtube-music/pull/3761)
|
||||||
|
- chore(deps): update dependency node-gyp to v11.4.2 [`#3772`](https://github.com/th-ch/youtube-music/pull/3772)
|
||||||
|
- chore(deps): update actions/checkout action to v5 [`#3757`](https://github.com/th-ch/youtube-music/pull/3757)
|
||||||
|
- chore(deps): update dependency vite to v7.1.5 [`#3760`](https://github.com/th-ch/youtube-music/pull/3760)
|
||||||
|
- fix(deps): update dependency hono to v4.9.6 [security] [`#3807`](https://github.com/th-ch/youtube-music/pull/3807)
|
||||||
|
- chore(deps): update dependency electron to v37.3.1 [security] [`#3806`](https://github.com/th-ch/youtube-music/pull/3806)
|
||||||
|
- chore(deps): bump hono from 4.9.2 to 4.9.6 [`#3805`](https://github.com/th-ch/youtube-music/pull/3805)
|
||||||
|
- chore(deps): update playwright monorepo to v1.54.2 [`#3713`](https://github.com/th-ch/youtube-music/pull/3713)
|
||||||
|
- chore(deps): update dependency vite to v7.1.2 [`#3710`](https://github.com/th-ch/youtube-music/pull/3710)
|
||||||
|
- chore(deps): update dependency @stylistic/eslint-plugin to v5.2.3 [`#3754`](https://github.com/th-ch/youtube-music/pull/3754)
|
||||||
|
- chore(deps): update dependency @babel/runtime to v7.28.3 [`#3753`](https://github.com/th-ch/youtube-music/pull/3753)
|
||||||
|
- chore(deps): update dependency discord-api-types to v0.38.20 [`#3706`](https://github.com/th-ch/youtube-music/pull/3706)
|
||||||
|
- fix(deps): update dependency @floating-ui/dom to v1.7.3 [`#3714`](https://github.com/th-ch/youtube-music/pull/3714)
|
||||||
|
- chore(deps): update dependency vite-plugin-solid to v2.11.8 [`#3711`](https://github.com/th-ch/youtube-music/pull/3711)
|
||||||
|
- chore(deps): update dependency rollup to v4.46.2 [`#3709`](https://github.com/th-ch/youtube-music/pull/3709)
|
||||||
|
- chore(deps): update dependency @electron/universal to v3.0.1 [`#3705`](https://github.com/th-ch/youtube-music/pull/3705)
|
||||||
|
- chore(deps): update dependency electron to v37.3.0 [`#3708`](https://github.com/th-ch/youtube-music/pull/3708)
|
||||||
|
- chore(docs): Grammar mistakes [`#3722`](https://github.com/th-ch/youtube-music/pull/3722)
|
||||||
|
- Fixes the error 500 for /auth/ endpoint [`#3627`](https://github.com/th-ch/youtube-music/pull/3627)
|
||||||
|
- feat: add custom window title option [`#3656`](https://github.com/th-ch/youtube-music/pull/3656)
|
||||||
|
- fix(deps): update dependency zod to v4.0.10 [`#3686`](https://github.com/th-ch/youtube-music/pull/3686)
|
||||||
|
- chore(deps): update dependency @babel/runtime to v7.28.2 [`#3687`](https://github.com/th-ch/youtube-music/pull/3687)
|
||||||
|
- chore(deps): update dependency rollup to v4.46.1 [`#3632`](https://github.com/th-ch/youtube-music/pull/3632)
|
||||||
|
- chore(deps): update dependency electron to v38.0.0-alpha.10 [`#3681`](https://github.com/th-ch/youtube-music/pull/3681)
|
||||||
|
- chore(deps): update dependency eslint-config-prettier to v10.1.8 [`#3676`](https://github.com/th-ch/youtube-music/pull/3676)
|
||||||
|
- chore(deps): update dependency eslint-plugin-prettier to v5.5.3 [`#3678`](https://github.com/th-ch/youtube-music/pull/3678)
|
||||||
|
- fix(deps): update dependency @ghostery/adblocker-electron to v2.11.3 [`#3679`](https://github.com/th-ch/youtube-music/pull/3679)
|
||||||
|
- chore(deps): update dependency discord-api-types to v0.38.17 [`#3620`](https://github.com/th-ch/youtube-music/pull/3620)
|
||||||
|
- chore(deps): update dependency esbuild to v0.25.8 [`#3675`](https://github.com/th-ch/youtube-music/pull/3675)
|
||||||
|
- chore(deps): update dependency @stylistic/eslint-plugin to v5.2.2 [`#3636`](https://github.com/th-ch/youtube-music/pull/3636)
|
||||||
|
- fix(deps): update dependency @hono/node-server to v1.17.1 [`#3625`](https://github.com/th-ch/youtube-music/pull/3625)
|
||||||
|
- fix(deps): update dependency hono to v4.8.7 [`#3567`](https://github.com/th-ch/youtube-music/pull/3567)
|
||||||
|
- chore(deps): update dependency typescript-eslint to v8.38.0 [`#3628`](https://github.com/th-ch/youtube-music/pull/3628)
|
||||||
|
- chore(deps): update dependency electron to v38.0.0-alpha.9 [`#3626`](https://github.com/th-ch/youtube-music/pull/3626)
|
||||||
|
- fix(Skip Disliked Song): updated querySelector [`#3667`](https://github.com/th-ch/youtube-music/pull/3667)
|
||||||
|
- chore(deps): update dependency vite to v7.0.11 [`#3624`](https://github.com/th-ch/youtube-music/pull/3624)
|
||||||
|
- fix(deps): update dependency @hono/zod-validator to v0.7.1 [`#3616`](https://github.com/th-ch/youtube-music/pull/3616)
|
||||||
|
- fix(discord-rpc, scrobbler): Align artist and title with the last.fm's de facto standard [`#3358`](https://github.com/th-ch/youtube-music/issues/3358) [`#3641`](https://github.com/th-ch/youtube-music/issues/3641)
|
||||||
|
- fix: fix #3621 (#3774) [`#3621`](https://github.com/th-ch/youtube-music/issues/3621)
|
||||||
|
- fix: fix #3661 [`#3661`](https://github.com/th-ch/youtube-music/issues/3661)
|
||||||
|
- fix: fix #3613, fix #3651 [`#3613`](https://github.com/th-ch/youtube-music/issues/3613) [`#3651`](https://github.com/th-ch/youtube-music/issues/3651)
|
||||||
|
- chore: remove unused deps [`2a81a4e`](https://github.com/th-ch/youtube-music/commit/2a81a4e887cb5cc3c91a672302db6da3c15544e8)
|
||||||
|
- chore(i18n): Translated using Weblate (Swedish) [`0a6f244`](https://github.com/th-ch/youtube-music/commit/0a6f244035f17724ab1934f3cb2e011adf838e09)
|
||||||
|
- fix: bump dependencies [`5ba65ea`](https://github.com/th-ch/youtube-music/commit/5ba65ea1221236478efa8cb61bca3ffb1bb2d061)
|
||||||
|
|
||||||
#### [v3.10.0](https://github.com/th-ch/youtube-music/compare/v3.9.0...v3.10.0)
|
#### [v3.10.0](https://github.com/th-ch/youtube-music/compare/v3.9.0...v3.10.0)
|
||||||
|
|
||||||
|
> 13 July 2025
|
||||||
|
|
||||||
- fix(deps): update dependency butterchurn to v3.0.0-beta.5 [`#3610`](https://github.com/th-ch/youtube-music/pull/3610)
|
- fix(deps): update dependency butterchurn to v3.0.0-beta.5 [`#3610`](https://github.com/th-ch/youtube-music/pull/3610)
|
||||||
- chore(deps): update eslint monorepo to v9.31.0 [`#3600`](https://github.com/th-ch/youtube-music/pull/3600)
|
- chore(deps): update eslint monorepo to v9.31.0 [`#3600`](https://github.com/th-ch/youtube-music/pull/3600)
|
||||||
- chore(deps): update dependency rollup to v4.45.0 [`#3568`](https://github.com/th-ch/youtube-music/pull/3568)
|
- chore(deps): update dependency rollup to v4.45.0 [`#3568`](https://github.com/th-ch/youtube-music/pull/3568)
|
||||||
|
|||||||
10
package.json
@ -45,7 +45,7 @@
|
|||||||
},
|
},
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"vite": "npm:rolldown-vite@7.1.5",
|
"vite": "npm:rolldown-vite@7.1.8",
|
||||||
"node-gyp": "11.4.2",
|
"node-gyp": "11.4.2",
|
||||||
"xml2js": "0.6.2",
|
"xml2js": "0.6.2",
|
||||||
"node-fetch": "3.3.2",
|
"node-fetch": "3.3.2",
|
||||||
@ -129,7 +129,7 @@
|
|||||||
"solid-transition-group": "0.3.0",
|
"solid-transition-group": "0.3.0",
|
||||||
"tiny-pinyin": "1.3.2",
|
"tiny-pinyin": "1.3.2",
|
||||||
"tinyld": "1.3.4",
|
"tinyld": "1.3.4",
|
||||||
"virtua": "0.42.2",
|
"virtua": "0.42.3",
|
||||||
"vudio": "2.1.1",
|
"vudio": "2.1.1",
|
||||||
"x11": "2.3.0",
|
"x11": "2.3.0",
|
||||||
"youtubei.js": "15.0.1",
|
"youtubei.js": "15.0.1",
|
||||||
@ -167,11 +167,11 @@
|
|||||||
"glob": "11.0.3",
|
"glob": "11.0.3",
|
||||||
"node-gyp": "11.4.2",
|
"node-gyp": "11.4.2",
|
||||||
"playwright": "1.55.0",
|
"playwright": "1.55.0",
|
||||||
"ts-morph": "26.0.0",
|
"ts-morph": "27.0.0",
|
||||||
"typescript": "5.9.2",
|
"typescript": "5.9.2",
|
||||||
"typescript-eslint": "8.42.0",
|
"typescript-eslint": "8.43.0",
|
||||||
"utf-8-validate": "6.0.5",
|
"utf-8-validate": "6.0.5",
|
||||||
"vite": "npm:rolldown-vite@7.1.5",
|
"vite": "npm:rolldown-vite@7.1.8",
|
||||||
"vite-plugin-inspect": "11.3.3",
|
"vite-plugin-inspect": "11.3.3",
|
||||||
"vite-plugin-resolve": "2.5.2",
|
"vite-plugin-resolve": "2.5.2",
|
||||||
"vite-plugin-solid": "2.11.8",
|
"vite-plugin-solid": "2.11.8",
|
||||||
|
|||||||
414
pnpm-lock.yaml
generated
@ -5,7 +5,7 @@ settings:
|
|||||||
excludeLinksFromLockfile: false
|
excludeLinksFromLockfile: false
|
||||||
|
|
||||||
overrides:
|
overrides:
|
||||||
vite: npm:rolldown-vite@7.1.5
|
vite: npm:rolldown-vite@7.1.8
|
||||||
node-gyp: 11.4.2
|
node-gyp: 11.4.2
|
||||||
xml2js: 0.6.2
|
xml2js: 0.6.2
|
||||||
node-fetch: 3.3.2
|
node-fetch: 3.3.2
|
||||||
@ -235,8 +235,8 @@ importers:
|
|||||||
specifier: 1.3.4
|
specifier: 1.3.4
|
||||||
version: 1.3.4
|
version: 1.3.4
|
||||||
virtua:
|
virtua:
|
||||||
specifier: 0.42.2
|
specifier: 0.42.3
|
||||||
version: 0.42.2(solid-js@1.9.9)
|
version: 0.42.3(solid-js@1.9.9)
|
||||||
vudio:
|
vudio:
|
||||||
specifier: 2.1.1
|
specifier: 2.1.1
|
||||||
version: 2.1.1(patch_hash=0e06c2ed11c02bdc490c209fa80070e98517c2735c641f5738b6e15d7dc1959d)
|
version: 2.1.1(patch_hash=0e06c2ed11c02bdc490c209fa80070e98517c2735c641f5738b6e15d7dc1959d)
|
||||||
@ -309,7 +309,7 @@ importers:
|
|||||||
version: 4.0.0
|
version: 4.0.0
|
||||||
electron-vite:
|
electron-vite:
|
||||||
specifier: 4.0.0
|
specifier: 4.0.0
|
||||||
version: 4.0.0(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1))
|
version: 4.0.0(rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1))
|
||||||
eslint:
|
eslint:
|
||||||
specifier: 9.35.0
|
specifier: 9.35.0
|
||||||
version: 9.35.0
|
version: 9.35.0
|
||||||
@ -324,7 +324,7 @@ importers:
|
|||||||
version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0)
|
version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0)
|
||||||
eslint-plugin-import:
|
eslint-plugin-import:
|
||||||
specifier: 2.32.0
|
specifier: 2.32.0
|
||||||
version: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0)
|
version: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0)
|
||||||
eslint-plugin-prettier:
|
eslint-plugin-prettier:
|
||||||
specifier: 5.5.4
|
specifier: 5.5.4
|
||||||
version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.35.0))(eslint@9.35.0)(prettier@3.6.2)
|
version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.35.0))(eslint@9.35.0)(prettier@3.6.2)
|
||||||
@ -341,29 +341,29 @@ importers:
|
|||||||
specifier: 1.55.0
|
specifier: 1.55.0
|
||||||
version: 1.55.0
|
version: 1.55.0
|
||||||
ts-morph:
|
ts-morph:
|
||||||
specifier: 26.0.0
|
specifier: 27.0.0
|
||||||
version: 26.0.0
|
version: 27.0.0
|
||||||
typescript:
|
typescript:
|
||||||
specifier: 5.9.2
|
specifier: 5.9.2
|
||||||
version: 5.9.2
|
version: 5.9.2
|
||||||
typescript-eslint:
|
typescript-eslint:
|
||||||
specifier: 8.42.0
|
specifier: 8.43.0
|
||||||
version: 8.42.0(eslint@9.35.0)(typescript@5.9.2)
|
version: 8.43.0(eslint@9.35.0)(typescript@5.9.2)
|
||||||
utf-8-validate:
|
utf-8-validate:
|
||||||
specifier: 6.0.5
|
specifier: 6.0.5
|
||||||
version: 6.0.5
|
version: 6.0.5
|
||||||
vite:
|
vite:
|
||||||
specifier: npm:rolldown-vite@7.1.5
|
specifier: npm:rolldown-vite@7.1.8
|
||||||
version: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)
|
version: rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)
|
||||||
vite-plugin-inspect:
|
vite-plugin-inspect:
|
||||||
specifier: 11.3.3
|
specifier: 11.3.3
|
||||||
version: 11.3.3(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1))
|
version: 11.3.3(rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1))
|
||||||
vite-plugin-resolve:
|
vite-plugin-resolve:
|
||||||
specifier: 2.5.2
|
specifier: 2.5.2
|
||||||
version: 2.5.2
|
version: 2.5.2
|
||||||
vite-plugin-solid:
|
vite-plugin-solid:
|
||||||
specifier: 2.11.8
|
specifier: 2.11.8
|
||||||
version: 2.11.8(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1))(solid-js@1.9.9)
|
version: 2.11.8(rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1))(solid-js@1.9.9)
|
||||||
ws:
|
ws:
|
||||||
specifier: 8.18.3
|
specifier: 8.18.3
|
||||||
version: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)
|
version: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)
|
||||||
@ -1062,12 +1062,12 @@ packages:
|
|||||||
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
|
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
|
||||||
deprecated: This functionality has been moved to @npmcli/fs
|
deprecated: This functionality has been moved to @npmcli/fs
|
||||||
|
|
||||||
'@oxc-project/runtime@0.82.3':
|
'@oxc-project/runtime@0.87.0':
|
||||||
resolution: {integrity: sha512-LNh5GlJvYHAnMurO+EyA8jJwN1rki7l3PSHuosDh2I7h00T6/u9rCkUjg/SvPmT1CZzvhuW0y+gf7jcqUy/Usg==}
|
resolution: {integrity: sha512-ky2Hqi2q/uGX36UfY79zxMbUqiNIl1RyKKVJfFenG70lbn+/fcaKBVTbhmUwn8a2wPyv2gNtDQxuDytbKX9giQ==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
|
||||||
'@oxc-project/types@0.82.3':
|
'@oxc-project/types@0.87.0':
|
||||||
resolution: {integrity: sha512-6nCUxBnGX0c6qfZW5MaF6/fmu5dHJDMiMPaioKHKs5mi5+8/FHQ7WGjgQIz1zxpmceMYfdIXkOaLYE+ejbuOtA==}
|
resolution: {integrity: sha512-ipZFWVGE9fADBVXXWJWY/cxpysc41Gt5upKDeb32F6WMgFyO7XETUMVq8UuREKCih+Km5E6p2VhEvf6Fuhey6g==}
|
||||||
|
|
||||||
'@pkgjs/parseargs@0.11.0':
|
'@pkgjs/parseargs@0.11.0':
|
||||||
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
||||||
@ -1103,78 +1103,91 @@ packages:
|
|||||||
'@remusao/trie@2.1.0':
|
'@remusao/trie@2.1.0':
|
||||||
resolution: {integrity: sha512-Er3Q8q0/2OcCJPQYJOPLmCuqO0wu7cav3SPtpjlxSbjFi1x+A1pZkkLD6c9q2rGEkGW/tkrRzfrhNMt8VQjzXg==}
|
resolution: {integrity: sha512-Er3Q8q0/2OcCJPQYJOPLmCuqO0wu7cav3SPtpjlxSbjFi1x+A1pZkkLD6c9q2rGEkGW/tkrRzfrhNMt8VQjzXg==}
|
||||||
|
|
||||||
'@rolldown/binding-android-arm64@1.0.0-beta.34':
|
'@rolldown/binding-android-arm64@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-jf5GNe5jP3Sr1Tih0WKvg2bzvh5T/1TA0fn1u32xSH7ca/p5t+/QRr4VRFCV/na5vjwKEhwWrChsL2AWlY+eoA==}
|
resolution: {integrity: sha512-0y4+MDSw9GzX4VZtATiygDv+OtijxsRtNBZW6qA3OUGi0fq6Gq+MnvFHMjdJxz3mv/thIHMmJ0AL7d8urYBCUw==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [android]
|
os: [android]
|
||||||
|
|
||||||
'@rolldown/binding-darwin-arm64@1.0.0-beta.34':
|
'@rolldown/binding-darwin-arm64@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-2F/TqH4QuJQ34tgWxqBjFL3XV1gMzeQgUO8YRtCPGBSP0GhxtoFzsp7KqmQEothsxztlv+KhhT9Dbg3HHwHViQ==}
|
resolution: {integrity: sha512-F/xv0vsxXuwpyecy3GMpXPhRLI4WogQkSYYl6hh61OfmyX4lxsemSoYQ5nlK/MopdVaT111wS1dRO2eXgzBHuA==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@rolldown/binding-darwin-x64@1.0.0-beta.34':
|
'@rolldown/binding-darwin-x64@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-E1QuFslgLWbHQ8Qli/AqUKdfg0pockQPwRxVbhNQ74SciZEZpzLaujkdmOLSccMlSXDfFCF8RPnMoRAzQ9JV8Q==}
|
resolution: {integrity: sha512-FX3x/GSybYRt4/fUljqIMuB7JRJThxnwzjK9Ka4qKwSw92RNmxRtw+NEkpuKq/Tzcq5qpnvSWudKmjcbBSMH1g==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@rolldown/binding-freebsd-x64@1.0.0-beta.34':
|
'@rolldown/binding-freebsd-x64@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-VS8VInNCwnkpI9WeQaWu3kVBq9ty6g7KrHdLxYMzeqz24+w9hg712TcWdqzdY6sn+24lUoMD9jTZrZ/qfVpk0g==}
|
resolution: {integrity: sha512-j7Y/OG4XxICRgGMLB7VVbROAzdnvtr0ZTBBYnv53KZESE97Ta4zXfGhEe+EiXLRKW8JWSMeNumOaBrWAXDMiZQ==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [freebsd]
|
os: [freebsd]
|
||||||
|
|
||||||
'@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.34':
|
'@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-4St4emjcnULnxJYb/5ZDrH/kK/j6PcUgc3eAqH5STmTrcF+I9m/X2xvSF2a2bWv1DOQhxBewThu0KkwGHdgu5w==}
|
resolution: {integrity: sha512-j3rDknokIJZ+iVGjWw2cVRgKLmk9boUoHtp2k3Ba6p7vWIv+D/YypQKHxAayyzvUkxTBZsw64Ojq5/zrytRODA==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@rolldown/binding-linux-arm64-gnu@1.0.0-beta.34':
|
'@rolldown/binding-linux-arm64-gnu@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-a737FTqhFUoWfnebS2SnQ2BS50p0JdukdkUBwy2J06j4hZ6Eej0zEB8vTfAqoCjn8BQKkXBy+3Sx0IRkgwz1gA==}
|
resolution: {integrity: sha512-7Ds2nl3ZhC0eaSJnw7dQ5uCK1cmaBKC+EL7IIpjTpzqY10y1xCn5w6gTFKzpqKhD2nSraY4MHOyAnE+zmSAZRA==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@rolldown/binding-linux-arm64-musl@1.0.0-beta.34':
|
'@rolldown/binding-linux-arm64-musl@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-NH+FeQWKyuw0k+PbXqpFWNfvD8RPvfJk766B/njdaWz4TmiEcSB0Nb6guNw1rBpM1FmltQYb3fFnTumtC6pRfA==}
|
resolution: {integrity: sha512-0Qa4b3gv956iSdJQplV1xdI9ALbEdNo5xsFpcLU4mW2A+CqWNenVHqcHbCvwvKTP07yX6yoUvUqZR1CBxxQShg==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@rolldown/binding-linux-x64-gnu@1.0.0-beta.34':
|
'@rolldown/binding-linux-x64-gnu@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-Q3RSCivp8pNadYK8ke3hLnQk08BkpZX9BmMjgwae2FWzdxhxxUiUzd9By7kneUL0vRQ4uRnhD9VkFQ+Haeqdvw==}
|
resolution: {integrity: sha512-wUdZljtx9W1V9KlnmwPgF0o2ZPFq2zffr/q+wM+GUrSFIJNmP9w0zgyl1coCt1ESnNyYYyJh8T1bqvx8+16SqA==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@rolldown/binding-linux-x64-musl@1.0.0-beta.34':
|
'@rolldown/binding-linux-x64-musl@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-wDd/HrNcVoBhWWBUW3evJHoo7GJE/RofssBy3Dsiip05YUBmokQVrYAyrboOY4dzs/lJ7HYeBtWQ9hj8wlyF0A==}
|
resolution: {integrity: sha512-Up56sJMDSKYi92/28lq9xB2wonuCwVnqBzjRnKmQauZJ5QOor9h1RtcMeCzSxg4ReMsNvrdYomBogewcZgKEww==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@rolldown/binding-openharmony-arm64@1.0.0-beta.34':
|
'@rolldown/binding-openharmony-arm64@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-dH3FTEV6KTNWpYSgjSXZzeX7vLty9oBYn6R3laEdhwZftQwq030LKL+5wyQdlbX5pnbh4h127hpv3Hl1+sj8dg==}
|
resolution: {integrity: sha512-qX3covX7EX00yrgQl3oi8GuRTS1XFe+YHm+sGsxQvPok+r7Ct2eDFpLmmw7wajZ2SuvAJYSo/9BXLSCGR0ve2w==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [openharmony]
|
os: [openharmony]
|
||||||
|
|
||||||
'@rolldown/binding-wasm32-wasi@1.0.0-beta.34':
|
'@rolldown/binding-wasm32-wasi@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-y5BUf+QtO0JsIDKA51FcGwvhJmv89BYjUl8AmN7jqD6k/eU55mH6RJYnxwCsODq5m7KSSTigVb6O7/GqB8wbPw==}
|
resolution: {integrity: sha512-phFsiR97/nbQEtyo5GTPX4h/Ootz0Pdd7P7+gTmkiashePwPUik5aoMAluvzY1tTUAfhdrFR2Y8WiWbnxnsSrQ==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
cpu: [wasm32]
|
cpu: [wasm32]
|
||||||
|
|
||||||
'@rolldown/binding-win32-arm64-msvc@1.0.0-beta.34':
|
'@rolldown/binding-win32-arm64-msvc@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-ga5hFhdTwpaNxEiuxZHWnD3ed0GBAzbgzS5tRHpe0ObptxM1a9Xrq6TVfNQirBLwb5Y7T/FJmJi3pmdLy95ljg==}
|
resolution: {integrity: sha512-dvvByfl7TRVhD9zY/VJ94hOVJmpN8Cfxl/A77yJ/oKV67IPEXx9hRUIhuL/V9eJ0RphNbLo4VKxdVuZ+wzEWTA==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@rolldown/binding-win32-ia32-msvc@1.0.0-beta.34':
|
'@rolldown/binding-win32-ia32-msvc@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-4/MBp9T9eRnZskxWr8EXD/xHvLhdjWaeX/qY9LPRG1JdCGV3DphkLTy5AWwIQ5jhAy2ZNJR5z2fYRlpWU0sIyQ==}
|
resolution: {integrity: sha512-n7odfY4zatppNGY/EE8wE8B78wIxlQzBaY7Ycyjun+HvYu4dJgz8A4JCKHhyYYoEA8+VXO167Or4EJ9SyBLNnw==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [ia32]
|
cpu: [ia32]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@rolldown/binding-win32-x64-msvc@1.0.0-beta.34':
|
'@rolldown/binding-win32-x64-msvc@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-7O5iUBX6HSBKlQU4WykpUoEmb0wQmonb6ziKFr3dJTHud2kzDnWMqk344T0qm3uGv9Ddq6Re/94pInxo1G2d4w==}
|
resolution: {integrity: sha512-ik9dlOa/bhRk+8NmbqCEZm9BBPy5UfSOg/Y6cAQac29Aw2/uoyoBbFUBFUKMsvfLg8F0dNxUOsT3IcVlfOJu0g==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@rolldown/pluginutils@1.0.0-beta.34':
|
'@rolldown/pluginutils@1.0.0-beta.36':
|
||||||
resolution: {integrity: sha512-LyAREkZHP5pMom7c24meKmJCdhf2hEyvam2q0unr3or9ydwDL+DJ8chTF6Av/RFPb3rH8UFBdMzO5MxTZW97oA==}
|
resolution: {integrity: sha512-qa+gfzhv0/Xv52zZInENLu6JbsnSjSExD7kTaNm7Qn5LUIH6IQb7l9pB+NrsU5/Bvt9aqcBTdRGc7x1DYMTiqQ==}
|
||||||
|
|
||||||
'@rtsao/scc@1.1.0':
|
'@rtsao/scc@1.1.0':
|
||||||
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
|
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
|
||||||
@ -1237,8 +1250,8 @@ packages:
|
|||||||
'@total-typescript/ts-reset@0.6.1':
|
'@total-typescript/ts-reset@0.6.1':
|
||||||
resolution: {integrity: sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==}
|
resolution: {integrity: sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==}
|
||||||
|
|
||||||
'@ts-morph/common@0.27.0':
|
'@ts-morph/common@0.28.0':
|
||||||
resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==}
|
resolution: {integrity: sha512-4w6X/oFmvXcwux6y6ExfM/xSqMHw20cYwFJH+BlYrtGa6nwY9qGq8GXnUs1sVYeF2o/KT3S8hAH6sKBI3VOkBg==}
|
||||||
|
|
||||||
'@tybys/wasm-util@0.10.0':
|
'@tybys/wasm-util@0.10.0':
|
||||||
resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==}
|
resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==}
|
||||||
@ -1324,16 +1337,16 @@ packages:
|
|||||||
'@types/yauzl@2.10.3':
|
'@types/yauzl@2.10.3':
|
||||||
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
|
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.42.0':
|
'@typescript-eslint/eslint-plugin@8.43.0':
|
||||||
resolution: {integrity: sha512-Aq2dPqsQkxHOLfb2OPv43RnIvfj05nw8v/6n3B2NABIPpHnjQnaLo9QGMTvml+tv4korl/Cjfrb/BYhoL8UUTQ==}
|
resolution: {integrity: sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@typescript-eslint/parser': ^8.42.0
|
'@typescript-eslint/parser': ^8.43.0
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.42.0':
|
'@typescript-eslint/parser@8.43.0':
|
||||||
resolution: {integrity: sha512-r1XG74QgShUgXph1BYseJ+KZd17bKQib/yF3SR+demvytiRXrwd12Blnz5eYGm8tXaeRdd4x88MlfwldHoudGg==}
|
resolution: {integrity: sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
@ -1345,18 +1358,34 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
|
'@typescript-eslint/project-service@8.43.0':
|
||||||
|
resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@typescript-eslint/scope-manager@8.42.0':
|
'@typescript-eslint/scope-manager@8.42.0':
|
||||||
resolution: {integrity: sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==}
|
resolution: {integrity: sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
|
'@typescript-eslint/scope-manager@8.43.0':
|
||||||
|
resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@typescript-eslint/tsconfig-utils@8.42.0':
|
'@typescript-eslint/tsconfig-utils@8.42.0':
|
||||||
resolution: {integrity: sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==}
|
resolution: {integrity: sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.42.0':
|
'@typescript-eslint/tsconfig-utils@8.43.0':
|
||||||
resolution: {integrity: sha512-9KChw92sbPTYVFw3JLRH1ockhyR3zqqn9lQXol3/YbI6jVxzWoGcT3AsAW0mu1MY0gYtsXnUGV/AKpkAj5tVlQ==}
|
resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
|
'@typescript-eslint/type-utils@8.43.0':
|
||||||
|
resolution: {integrity: sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
@ -1366,12 +1395,22 @@ packages:
|
|||||||
resolution: {integrity: sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==}
|
resolution: {integrity: sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
|
'@typescript-eslint/types@8.43.0':
|
||||||
|
resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@typescript-eslint/typescript-estree@8.42.0':
|
'@typescript-eslint/typescript-estree@8.42.0':
|
||||||
resolution: {integrity: sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==}
|
resolution: {integrity: sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
|
'@typescript-eslint/typescript-estree@8.43.0':
|
||||||
|
resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.42.0':
|
'@typescript-eslint/utils@8.42.0':
|
||||||
resolution: {integrity: sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==}
|
resolution: {integrity: sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
@ -1379,10 +1418,21 @@ packages:
|
|||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
|
'@typescript-eslint/utils@8.43.0':
|
||||||
|
resolution: {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
peerDependencies:
|
||||||
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@typescript-eslint/visitor-keys@8.42.0':
|
'@typescript-eslint/visitor-keys@8.42.0':
|
||||||
resolution: {integrity: sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==}
|
resolution: {integrity: sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
|
'@typescript-eslint/visitor-keys@8.43.0':
|
||||||
|
resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@unrs/resolver-binding-android-arm-eabi@1.11.1':
|
'@unrs/resolver-binding-android-arm-eabi@1.11.1':
|
||||||
resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==}
|
resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
@ -3997,8 +4047,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==}
|
resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==}
|
||||||
engines: {node: '>=8.0'}
|
engines: {node: '>=8.0'}
|
||||||
|
|
||||||
rolldown-vite@7.1.5:
|
rolldown-vite@7.1.8:
|
||||||
resolution: {integrity: sha512-NgHjKatQn1B5TjtNVS3+Uq3JBUPP8s70cMxLzGHpv/UyCGj0SQUtVYImNWbU2uqfOpNSnqhI+nbR7tmPPcb1qQ==}
|
resolution: {integrity: sha512-AfI/iNNsTjJv6E3nUSAra8bP4j30MZTt8JSB6iBZP1dblxnF6+3EE6TXQc75M69aH/Cr5p6N1Sk/1JyTDKFgOg==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -4037,8 +4087,9 @@ packages:
|
|||||||
yaml:
|
yaml:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
rolldown@1.0.0-beta.34:
|
rolldown@1.0.0-beta.36:
|
||||||
resolution: {integrity: sha512-Wwh7EwalMzzX3Yy3VN58VEajeR2Si8+HDNMf706jPLIqU7CxneRW+dQVfznf5O0TWTnJyu4npelwg2bzTXB1Nw==}
|
resolution: {integrity: sha512-eethnJ/UfQWg2VWBDDMEu7IDvEh4WPbPb1azPWDCHcuOwoPT9C2NT4Y/ecZztCl9OBzXoA+CXXb5MS+qbukAig==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
run-applescript@7.0.0:
|
run-applescript@7.0.0:
|
||||||
@ -4391,6 +4442,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
|
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
|
||||||
engines: {node: '>=12.0.0'}
|
engines: {node: '>=12.0.0'}
|
||||||
|
|
||||||
|
tinyglobby@0.2.15:
|
||||||
|
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
|
||||||
|
engines: {node: '>=12.0.0'}
|
||||||
|
|
||||||
tinyld@1.3.4:
|
tinyld@1.3.4:
|
||||||
resolution: {integrity: sha512-u26CNoaInA4XpDU+8s/6Cq8xHc2T5M4fXB3ICfXPokUQoLzmPgSZU02TAkFwFMJCWTjk53gtkS8pETTreZwCqw==}
|
resolution: {integrity: sha512-u26CNoaInA4XpDU+8s/6Cq8xHc2T5M4fXB3ICfXPokUQoLzmPgSZU02TAkFwFMJCWTjk53gtkS8pETTreZwCqw==}
|
||||||
engines: {node: '>= 12.10.0', npm: '>= 6.12.0', yarn: '>= 1.20.0'}
|
engines: {node: '>= 12.10.0', npm: '>= 6.12.0', yarn: '>= 1.20.0'}
|
||||||
@ -4430,8 +4485,8 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4'
|
typescript: '>=4.8.4'
|
||||||
|
|
||||||
ts-morph@26.0.0:
|
ts-morph@27.0.0:
|
||||||
resolution: {integrity: sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==}
|
resolution: {integrity: sha512-xcqelpTR5PCuZMs54qp9DE3t7tPgA2v/P1/qdW4ke5b3Y5liTGTYj6a/twT35EQW/H5okRqp1UOqwNlgg0K0eQ==}
|
||||||
|
|
||||||
tsconfig-paths@3.15.0:
|
tsconfig-paths@3.15.0:
|
||||||
resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
|
resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
|
||||||
@ -4471,8 +4526,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
|
resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
typescript-eslint@8.42.0:
|
typescript-eslint@8.43.0:
|
||||||
resolution: {integrity: sha512-ozR/rQn+aQXQxh1YgbCzQWDFrsi9mcg+1PM3l/z5o1+20P7suOIaNg515bpr/OYt6FObz/NHcBstydDLHWeEKg==}
|
resolution: {integrity: sha512-FyRGJKUGvcFekRRcBKFBlAhnp4Ng8rhe8tuvvkR9OiU0gfd4vyvTRQHEckO6VDlH57jbeUQem2IpqPq9kLJH+w==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
@ -4579,8 +4634,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==}
|
resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==}
|
||||||
engines: {node: '>=0.6.0'}
|
engines: {node: '>=0.6.0'}
|
||||||
|
|
||||||
virtua@0.42.2:
|
virtua@0.42.3:
|
||||||
resolution: {integrity: sha512-9ZQ1HtN6IhJ9tEG6NenjbcSPGpnbd8QeHLEjPadZ1rMVX7T4g+9QybetSeECNq2q2sXh799xw4mrMCYKx4HXmQ==}
|
resolution: {integrity: sha512-5FoAKcEvh05qsUF97Yz42SWJ7bwnPExjUYHGuoxz1EUtfWtaOgXaRwnylJbDpA0QcH1rKvJ2qsGRi9MK1fpQbg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: '>=16.14.0'
|
react: '>=16.14.0'
|
||||||
react-dom: '>=16.14.0'
|
react-dom: '>=16.14.0'
|
||||||
@ -5618,9 +5673,9 @@ snapshots:
|
|||||||
mkdirp: 1.0.4
|
mkdirp: 1.0.4
|
||||||
rimraf: 3.0.2
|
rimraf: 3.0.2
|
||||||
|
|
||||||
'@oxc-project/runtime@0.82.3': {}
|
'@oxc-project/runtime@0.87.0': {}
|
||||||
|
|
||||||
'@oxc-project/types@0.82.3': {}
|
'@oxc-project/types@0.87.0': {}
|
||||||
|
|
||||||
'@pkgjs/parseargs@0.11.0':
|
'@pkgjs/parseargs@0.11.0':
|
||||||
optional: true
|
optional: true
|
||||||
@ -5650,51 +5705,51 @@ snapshots:
|
|||||||
|
|
||||||
'@remusao/trie@2.1.0': {}
|
'@remusao/trie@2.1.0': {}
|
||||||
|
|
||||||
'@rolldown/binding-android-arm64@1.0.0-beta.34':
|
'@rolldown/binding-android-arm64@1.0.0-beta.36':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-darwin-arm64@1.0.0-beta.34':
|
'@rolldown/binding-darwin-arm64@1.0.0-beta.36':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-darwin-x64@1.0.0-beta.34':
|
'@rolldown/binding-darwin-x64@1.0.0-beta.36':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-freebsd-x64@1.0.0-beta.34':
|
'@rolldown/binding-freebsd-x64@1.0.0-beta.36':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.34':
|
'@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.36':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-linux-arm64-gnu@1.0.0-beta.34':
|
'@rolldown/binding-linux-arm64-gnu@1.0.0-beta.36':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-linux-arm64-musl@1.0.0-beta.34':
|
'@rolldown/binding-linux-arm64-musl@1.0.0-beta.36':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-linux-x64-gnu@1.0.0-beta.34':
|
'@rolldown/binding-linux-x64-gnu@1.0.0-beta.36':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-linux-x64-musl@1.0.0-beta.34':
|
'@rolldown/binding-linux-x64-musl@1.0.0-beta.36':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-openharmony-arm64@1.0.0-beta.34':
|
'@rolldown/binding-openharmony-arm64@1.0.0-beta.36':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-wasm32-wasi@1.0.0-beta.34':
|
'@rolldown/binding-wasm32-wasi@1.0.0-beta.36':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@napi-rs/wasm-runtime': 1.0.3
|
'@napi-rs/wasm-runtime': 1.0.3
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-win32-arm64-msvc@1.0.0-beta.34':
|
'@rolldown/binding-win32-arm64-msvc@1.0.0-beta.36':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-win32-ia32-msvc@1.0.0-beta.34':
|
'@rolldown/binding-win32-ia32-msvc@1.0.0-beta.36':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/binding-win32-x64-msvc@1.0.0-beta.34':
|
'@rolldown/binding-win32-x64-msvc@1.0.0-beta.36':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rolldown/pluginutils@1.0.0-beta.34': {}
|
'@rolldown/pluginutils@1.0.0-beta.36': {}
|
||||||
|
|
||||||
'@rtsao/scc@1.1.0': {}
|
'@rtsao/scc@1.1.0': {}
|
||||||
|
|
||||||
@ -5746,11 +5801,11 @@ snapshots:
|
|||||||
|
|
||||||
'@total-typescript/ts-reset@0.6.1': {}
|
'@total-typescript/ts-reset@0.6.1': {}
|
||||||
|
|
||||||
'@ts-morph/common@0.27.0':
|
'@ts-morph/common@0.28.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
fast-glob: 3.3.3
|
|
||||||
minimatch: 10.0.3
|
minimatch: 10.0.3
|
||||||
path-browserify: 1.0.1
|
path-browserify: 1.0.1
|
||||||
|
tinyglobby: 0.2.14
|
||||||
|
|
||||||
'@tybys/wasm-util@0.10.0':
|
'@tybys/wasm-util@0.10.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -5855,14 +5910,14 @@ snapshots:
|
|||||||
'@types/node': 24.3.0
|
'@types/node': 24.3.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2))(eslint@9.35.0)(typescript@5.9.2)':
|
'@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint@9.35.0)(typescript@5.9.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/regexpp': 4.12.1
|
'@eslint-community/regexpp': 4.12.1
|
||||||
'@typescript-eslint/parser': 8.42.0(eslint@9.35.0)(typescript@5.9.2)
|
'@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.2)
|
||||||
'@typescript-eslint/scope-manager': 8.42.0
|
'@typescript-eslint/scope-manager': 8.43.0
|
||||||
'@typescript-eslint/type-utils': 8.42.0(eslint@9.35.0)(typescript@5.9.2)
|
'@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0)(typescript@5.9.2)
|
||||||
'@typescript-eslint/utils': 8.42.0(eslint@9.35.0)(typescript@5.9.2)
|
'@typescript-eslint/utils': 8.43.0(eslint@9.35.0)(typescript@5.9.2)
|
||||||
'@typescript-eslint/visitor-keys': 8.42.0
|
'@typescript-eslint/visitor-keys': 8.43.0
|
||||||
eslint: 9.35.0
|
eslint: 9.35.0
|
||||||
graphemer: 1.4.0
|
graphemer: 1.4.0
|
||||||
ignore: 7.0.5
|
ignore: 7.0.5
|
||||||
@ -5872,12 +5927,12 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2)':
|
'@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/scope-manager': 8.42.0
|
'@typescript-eslint/scope-manager': 8.43.0
|
||||||
'@typescript-eslint/types': 8.42.0
|
'@typescript-eslint/types': 8.43.0
|
||||||
'@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2)
|
'@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2)
|
||||||
'@typescript-eslint/visitor-keys': 8.42.0
|
'@typescript-eslint/visitor-keys': 8.43.0
|
||||||
debug: 4.4.1
|
debug: 4.4.1
|
||||||
eslint: 9.35.0
|
eslint: 9.35.0
|
||||||
typescript: 5.9.2
|
typescript: 5.9.2
|
||||||
@ -5893,20 +5948,38 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@typescript-eslint/project-service@8.43.0(typescript@5.9.2)':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2)
|
||||||
|
'@typescript-eslint/types': 8.43.0
|
||||||
|
debug: 4.4.1
|
||||||
|
typescript: 5.9.2
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/scope-manager@8.42.0':
|
'@typescript-eslint/scope-manager@8.42.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.42.0
|
'@typescript-eslint/types': 8.42.0
|
||||||
'@typescript-eslint/visitor-keys': 8.42.0
|
'@typescript-eslint/visitor-keys': 8.42.0
|
||||||
|
|
||||||
|
'@typescript-eslint/scope-manager@8.43.0':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/types': 8.43.0
|
||||||
|
'@typescript-eslint/visitor-keys': 8.43.0
|
||||||
|
|
||||||
'@typescript-eslint/tsconfig-utils@8.42.0(typescript@5.9.2)':
|
'@typescript-eslint/tsconfig-utils@8.42.0(typescript@5.9.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
typescript: 5.9.2
|
typescript: 5.9.2
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.42.0(eslint@9.35.0)(typescript@5.9.2)':
|
'@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.42.0
|
typescript: 5.9.2
|
||||||
'@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2)
|
|
||||||
'@typescript-eslint/utils': 8.42.0(eslint@9.35.0)(typescript@5.9.2)
|
'@typescript-eslint/type-utils@8.43.0(eslint@9.35.0)(typescript@5.9.2)':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/types': 8.43.0
|
||||||
|
'@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2)
|
||||||
|
'@typescript-eslint/utils': 8.43.0(eslint@9.35.0)(typescript@5.9.2)
|
||||||
debug: 4.4.1
|
debug: 4.4.1
|
||||||
eslint: 9.35.0
|
eslint: 9.35.0
|
||||||
ts-api-utils: 2.1.0(typescript@5.9.2)
|
ts-api-utils: 2.1.0(typescript@5.9.2)
|
||||||
@ -5916,6 +5989,8 @@ snapshots:
|
|||||||
|
|
||||||
'@typescript-eslint/types@8.42.0': {}
|
'@typescript-eslint/types@8.42.0': {}
|
||||||
|
|
||||||
|
'@typescript-eslint/types@8.43.0': {}
|
||||||
|
|
||||||
'@typescript-eslint/typescript-estree@8.42.0(typescript@5.9.2)':
|
'@typescript-eslint/typescript-estree@8.42.0(typescript@5.9.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/project-service': 8.42.0(typescript@5.9.2)
|
'@typescript-eslint/project-service': 8.42.0(typescript@5.9.2)
|
||||||
@ -5932,6 +6007,22 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.2)':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/project-service': 8.43.0(typescript@5.9.2)
|
||||||
|
'@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2)
|
||||||
|
'@typescript-eslint/types': 8.43.0
|
||||||
|
'@typescript-eslint/visitor-keys': 8.43.0
|
||||||
|
debug: 4.4.1
|
||||||
|
fast-glob: 3.3.3
|
||||||
|
is-glob: 4.0.3
|
||||||
|
minimatch: 9.0.5
|
||||||
|
semver: 7.7.2
|
||||||
|
ts-api-utils: 2.1.0(typescript@5.9.2)
|
||||||
|
typescript: 5.9.2
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.42.0(eslint@9.35.0)(typescript@5.9.2)':
|
'@typescript-eslint/utils@8.42.0(eslint@9.35.0)(typescript@5.9.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/eslint-utils': 4.8.0(eslint@9.35.0)
|
'@eslint-community/eslint-utils': 4.8.0(eslint@9.35.0)
|
||||||
@ -5943,11 +6034,27 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@typescript-eslint/utils@8.43.0(eslint@9.35.0)(typescript@5.9.2)':
|
||||||
|
dependencies:
|
||||||
|
'@eslint-community/eslint-utils': 4.8.0(eslint@9.35.0)
|
||||||
|
'@typescript-eslint/scope-manager': 8.43.0
|
||||||
|
'@typescript-eslint/types': 8.43.0
|
||||||
|
'@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2)
|
||||||
|
eslint: 9.35.0
|
||||||
|
typescript: 5.9.2
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/visitor-keys@8.42.0':
|
'@typescript-eslint/visitor-keys@8.42.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.42.0
|
'@typescript-eslint/types': 8.42.0
|
||||||
eslint-visitor-keys: 4.2.1
|
eslint-visitor-keys: 4.2.1
|
||||||
|
|
||||||
|
'@typescript-eslint/visitor-keys@8.43.0':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/types': 8.43.0
|
||||||
|
eslint-visitor-keys: 4.2.1
|
||||||
|
|
||||||
'@unrs/resolver-binding-android-arm-eabi@1.11.1':
|
'@unrs/resolver-binding-android-arm-eabi@1.11.1':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
@ -6928,7 +7035,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
electron-vite@4.0.0(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)):
|
electron-vite@4.0.0(rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.28.3
|
'@babel/core': 7.28.3
|
||||||
'@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.3)
|
'@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.3)
|
||||||
@ -6936,7 +7043,7 @@ snapshots:
|
|||||||
esbuild: 0.25.9
|
esbuild: 0.25.9
|
||||||
magic-string: 0.30.17
|
magic-string: 0.30.17
|
||||||
picocolors: 1.1.1
|
picocolors: 1.1.1
|
||||||
vite: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)
|
vite: rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
@ -7135,7 +7242,7 @@ snapshots:
|
|||||||
eslint-import-resolver-exports@1.0.0-beta.5(eslint-plugin-import@2.32.0)(eslint@9.35.0):
|
eslint-import-resolver-exports@1.0.0-beta.5(eslint-plugin-import@2.32.0)(eslint@9.35.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.35.0
|
eslint: 9.35.0
|
||||||
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0)
|
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0)
|
||||||
resolve.exports: 2.0.3
|
resolve.exports: 2.0.3
|
||||||
|
|
||||||
eslint-import-resolver-node@0.3.9:
|
eslint-import-resolver-node@0.3.9:
|
||||||
@ -7157,22 +7264,22 @@ snapshots:
|
|||||||
tinyglobby: 0.2.14
|
tinyglobby: 0.2.14
|
||||||
unrs-resolver: 1.11.1
|
unrs-resolver: 1.11.1
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0)
|
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0):
|
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@typescript-eslint/parser': 8.42.0(eslint@9.35.0)(typescript@5.9.2)
|
'@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.2)
|
||||||
eslint: 9.35.0
|
eslint: 9.35.0
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0)
|
eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0):
|
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rtsao/scc': 1.1.0
|
'@rtsao/scc': 1.1.0
|
||||||
array-includes: 3.1.9
|
array-includes: 3.1.9
|
||||||
@ -7183,7 +7290,7 @@ snapshots:
|
|||||||
doctrine: 2.1.0
|
doctrine: 2.1.0
|
||||||
eslint: 9.35.0
|
eslint: 9.35.0
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0)
|
eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0)
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
is-core-module: 2.16.1
|
is-core-module: 2.16.1
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
@ -7195,7 +7302,7 @@ snapshots:
|
|||||||
string.prototype.trimend: 1.0.9
|
string.prototype.trimend: 1.0.9
|
||||||
tsconfig-paths: 3.15.0
|
tsconfig-paths: 3.15.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@typescript-eslint/parser': 8.42.0(eslint@9.35.0)(typescript@5.9.2)
|
'@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- eslint-import-resolver-typescript
|
- eslint-import-resolver-typescript
|
||||||
- eslint-import-resolver-webpack
|
- eslint-import-resolver-webpack
|
||||||
@ -8835,41 +8942,41 @@ snapshots:
|
|||||||
sprintf-js: 1.1.3
|
sprintf-js: 1.1.3
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1):
|
rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
fdir: 6.5.0(picomatch@4.0.3)
|
fdir: 6.5.0(picomatch@4.0.3)
|
||||||
lightningcss: 1.30.1
|
lightningcss: 1.30.1
|
||||||
picomatch: 4.0.3
|
picomatch: 4.0.3
|
||||||
postcss: 8.5.6
|
postcss: 8.5.6
|
||||||
rolldown: 1.0.0-beta.34
|
rolldown: 1.0.0-beta.36
|
||||||
tinyglobby: 0.2.14
|
tinyglobby: 0.2.15
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/node': 24.3.0
|
'@types/node': 24.3.0
|
||||||
esbuild: 0.25.9
|
esbuild: 0.25.9
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
yaml: 2.8.1
|
yaml: 2.8.1
|
||||||
|
|
||||||
rolldown@1.0.0-beta.34:
|
rolldown@1.0.0-beta.36:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@oxc-project/runtime': 0.82.3
|
'@oxc-project/runtime': 0.87.0
|
||||||
'@oxc-project/types': 0.82.3
|
'@oxc-project/types': 0.87.0
|
||||||
'@rolldown/pluginutils': 1.0.0-beta.34
|
'@rolldown/pluginutils': 1.0.0-beta.36
|
||||||
ansis: 4.1.0
|
ansis: 4.1.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@rolldown/binding-android-arm64': 1.0.0-beta.34
|
'@rolldown/binding-android-arm64': 1.0.0-beta.36
|
||||||
'@rolldown/binding-darwin-arm64': 1.0.0-beta.34
|
'@rolldown/binding-darwin-arm64': 1.0.0-beta.36
|
||||||
'@rolldown/binding-darwin-x64': 1.0.0-beta.34
|
'@rolldown/binding-darwin-x64': 1.0.0-beta.36
|
||||||
'@rolldown/binding-freebsd-x64': 1.0.0-beta.34
|
'@rolldown/binding-freebsd-x64': 1.0.0-beta.36
|
||||||
'@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.34
|
'@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.36
|
||||||
'@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.34
|
'@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.36
|
||||||
'@rolldown/binding-linux-arm64-musl': 1.0.0-beta.34
|
'@rolldown/binding-linux-arm64-musl': 1.0.0-beta.36
|
||||||
'@rolldown/binding-linux-x64-gnu': 1.0.0-beta.34
|
'@rolldown/binding-linux-x64-gnu': 1.0.0-beta.36
|
||||||
'@rolldown/binding-linux-x64-musl': 1.0.0-beta.34
|
'@rolldown/binding-linux-x64-musl': 1.0.0-beta.36
|
||||||
'@rolldown/binding-openharmony-arm64': 1.0.0-beta.34
|
'@rolldown/binding-openharmony-arm64': 1.0.0-beta.36
|
||||||
'@rolldown/binding-wasm32-wasi': 1.0.0-beta.34
|
'@rolldown/binding-wasm32-wasi': 1.0.0-beta.36
|
||||||
'@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.34
|
'@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.36
|
||||||
'@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.34
|
'@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.36
|
||||||
'@rolldown/binding-win32-x64-msvc': 1.0.0-beta.34
|
'@rolldown/binding-win32-x64-msvc': 1.0.0-beta.36
|
||||||
|
|
||||||
run-applescript@7.0.0: {}
|
run-applescript@7.0.0: {}
|
||||||
|
|
||||||
@ -9278,6 +9385,11 @@ snapshots:
|
|||||||
fdir: 6.5.0(picomatch@4.0.3)
|
fdir: 6.5.0(picomatch@4.0.3)
|
||||||
picomatch: 4.0.3
|
picomatch: 4.0.3
|
||||||
|
|
||||||
|
tinyglobby@0.2.15:
|
||||||
|
dependencies:
|
||||||
|
fdir: 6.5.0(picomatch@4.0.3)
|
||||||
|
picomatch: 4.0.3
|
||||||
|
|
||||||
tinyld@1.3.4: {}
|
tinyld@1.3.4: {}
|
||||||
|
|
||||||
tldts-core@7.0.12: {}
|
tldts-core@7.0.12: {}
|
||||||
@ -9311,9 +9423,9 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
typescript: 5.9.2
|
typescript: 5.9.2
|
||||||
|
|
||||||
ts-morph@26.0.0:
|
ts-morph@27.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@ts-morph/common': 0.27.0
|
'@ts-morph/common': 0.28.0
|
||||||
code-block-writer: 13.0.3
|
code-block-writer: 13.0.3
|
||||||
|
|
||||||
tsconfig-paths@3.15.0:
|
tsconfig-paths@3.15.0:
|
||||||
@ -9369,12 +9481,12 @@ snapshots:
|
|||||||
possible-typed-array-names: 1.1.0
|
possible-typed-array-names: 1.1.0
|
||||||
reflect.getprototypeof: 1.0.10
|
reflect.getprototypeof: 1.0.10
|
||||||
|
|
||||||
typescript-eslint@8.42.0(eslint@9.35.0)(typescript@5.9.2):
|
typescript-eslint@8.43.0(eslint@9.35.0)(typescript@5.9.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/eslint-plugin': 8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2))(eslint@9.35.0)(typescript@5.9.2)
|
'@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint@9.35.0)(typescript@5.9.2)
|
||||||
'@typescript-eslint/parser': 8.42.0(eslint@9.35.0)(typescript@5.9.2)
|
'@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.2)
|
||||||
'@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2)
|
'@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2)
|
||||||
'@typescript-eslint/utils': 8.42.0(eslint@9.35.0)(typescript@5.9.2)
|
'@typescript-eslint/utils': 8.43.0(eslint@9.35.0)(typescript@5.9.2)
|
||||||
eslint: 9.35.0
|
eslint: 9.35.0
|
||||||
typescript: 5.9.2
|
typescript: 5.9.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@ -9494,21 +9606,21 @@ snapshots:
|
|||||||
extsprintf: 1.4.1
|
extsprintf: 1.4.1
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
virtua@0.42.2(solid-js@1.9.9):
|
virtua@0.42.3(solid-js@1.9.9):
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
solid-js: 1.9.9
|
solid-js: 1.9.9
|
||||||
|
|
||||||
vite-dev-rpc@1.1.0(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)):
|
vite-dev-rpc@1.1.0(rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)):
|
||||||
dependencies:
|
dependencies:
|
||||||
birpc: 2.5.0
|
birpc: 2.5.0
|
||||||
vite: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)
|
vite: rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)
|
||||||
vite-hot-client: 2.1.0(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1))
|
vite-hot-client: 2.1.0(rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1))
|
||||||
|
|
||||||
vite-hot-client@2.1.0(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)):
|
vite-hot-client@2.1.0(rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)):
|
||||||
dependencies:
|
dependencies:
|
||||||
vite: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)
|
vite: rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)
|
||||||
|
|
||||||
vite-plugin-inspect@11.3.3(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)):
|
vite-plugin-inspect@11.3.3(rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)):
|
||||||
dependencies:
|
dependencies:
|
||||||
ansis: 4.1.0
|
ansis: 4.1.0
|
||||||
debug: 4.4.1
|
debug: 4.4.1
|
||||||
@ -9518,8 +9630,8 @@ snapshots:
|
|||||||
perfect-debounce: 2.0.0
|
perfect-debounce: 2.0.0
|
||||||
sirv: 3.0.1
|
sirv: 3.0.1
|
||||||
unplugin-utils: 0.3.0
|
unplugin-utils: 0.3.0
|
||||||
vite: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)
|
vite: rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)
|
||||||
vite-dev-rpc: 1.1.0(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1))
|
vite-dev-rpc: 1.1.0(rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1))
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
@ -9527,7 +9639,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
lib-esm: 0.4.2
|
lib-esm: 0.4.2
|
||||||
|
|
||||||
vite-plugin-solid@2.11.8(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1))(solid-js@1.9.9):
|
vite-plugin-solid@2.11.8(rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1))(solid-js@1.9.9):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.28.3
|
'@babel/core': 7.28.3
|
||||||
'@types/babel__core': 7.20.5
|
'@types/babel__core': 7.20.5
|
||||||
@ -9535,14 +9647,14 @@ snapshots:
|
|||||||
merge-anything: 5.1.7
|
merge-anything: 5.1.7
|
||||||
solid-js: 1.9.9
|
solid-js: 1.9.9
|
||||||
solid-refresh: 0.6.3(solid-js@1.9.9)
|
solid-refresh: 0.6.3(solid-js@1.9.9)
|
||||||
vite: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)
|
vite: rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)
|
||||||
vitefu: 1.1.1(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1))
|
vitefu: 1.1.1(rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1))
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
vitefu@1.1.1(rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)):
|
vitefu@1.1.1(rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)):
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
vite: rolldown-vite@7.1.5(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)
|
vite: rolldown-vite@7.1.8(@types/node@24.3.0)(esbuild@0.25.9)(yaml@2.8.1)
|
||||||
|
|
||||||
vudio@2.1.1(patch_hash=0e06c2ed11c02bdc490c209fa80070e98517c2735c641f5738b6e15d7dc1959d): {}
|
vudio@2.1.1(patch_hash=0e06c2ed11c02bdc490c209fa80070e98517c2735c641f5738b6e15d7dc1959d): {}
|
||||||
|
|
||||||
|
|||||||
@ -150,6 +150,12 @@
|
|||||||
"visual-tweaks": {
|
"visual-tweaks": {
|
||||||
"label": "تعديلات المظهر",
|
"label": "تعديلات المظهر",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
|
"custom-window-title": {
|
||||||
|
"label": "عنوان نافذة مخصص",
|
||||||
|
"prompt": {
|
||||||
|
"placeholder": "مثال: YouTube Music"
|
||||||
|
}
|
||||||
|
},
|
||||||
"like-buttons": {
|
"like-buttons": {
|
||||||
"default": "الافتراضي",
|
"default": "الافتراضي",
|
||||||
"force-show": "اجبار الظهور",
|
"force-show": "اجبار الظهور",
|
||||||
@ -414,6 +420,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"custom-output-device": {
|
||||||
|
"menu": {
|
||||||
|
"device-selector": "اختر جهاز"
|
||||||
|
}
|
||||||
|
},
|
||||||
"disable-autoplay": {
|
"disable-autoplay": {
|
||||||
"description": "يجعل الأغنية تبدأ في وضع \"الإيقاف المؤقت\"",
|
"description": "يجعل الأغنية تبدأ في وضع \"الإيقاف المؤقت\"",
|
||||||
"menu": {
|
"menu": {
|
||||||
@ -846,6 +857,18 @@
|
|||||||
"description": "يضيف أداة TouchBar لمستخدمي macOS",
|
"description": "يضيف أداة TouchBar لمستخدمي macOS",
|
||||||
"name": "شريط اللمس (TouchBar)"
|
"name": "شريط اللمس (TouchBar)"
|
||||||
},
|
},
|
||||||
|
"transparent-player": {
|
||||||
|
"menu": {
|
||||||
|
"type": {
|
||||||
|
"submenu": {
|
||||||
|
"acrylic": "زجاجي",
|
||||||
|
"mica": "حجري",
|
||||||
|
"none": "لاشيء"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "مشغل شفاف"
|
||||||
|
},
|
||||||
"tuna-obs": {
|
"tuna-obs": {
|
||||||
"description": "التكامل مع الإضافة\" Tuna\" الخاصة بـ OBS",
|
"description": "التكامل مع الإضافة\" Tuna\" الخاصة بـ OBS",
|
||||||
"name": "إضافة Tuna OBS"
|
"name": "إضافة Tuna OBS"
|
||||||
|
|||||||
@ -150,6 +150,13 @@
|
|||||||
"visual-tweaks": {
|
"visual-tweaks": {
|
||||||
"label": "Визуални настройки",
|
"label": "Визуални настройки",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
|
"custom-window-title": {
|
||||||
|
"label": "Персонализирано заглавие на прозорец",
|
||||||
|
"prompt": {
|
||||||
|
"label": "Въведи персонализирано заглавие: (остави празно за да изключиш)",
|
||||||
|
"placeholder": "Пример: Youtube Music"
|
||||||
|
}
|
||||||
|
},
|
||||||
"like-buttons": {
|
"like-buttons": {
|
||||||
"default": "По подразбиране",
|
"default": "По подразбиране",
|
||||||
"force-show": "Принудително показване",
|
"force-show": "Принудително показване",
|
||||||
@ -414,6 +421,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"custom-output-device": {
|
||||||
|
"description": "Конфигуриране на изходно медийно устройство за песни",
|
||||||
|
"menu": {
|
||||||
|
"device-selector": "Избери устройство"
|
||||||
|
},
|
||||||
|
"name": "Персонализирано изходно устройство",
|
||||||
|
"prompt": {
|
||||||
|
"device-selector": {
|
||||||
|
"label": "Избери изходното медийно устройство",
|
||||||
|
"title": "Избери изходно устройство"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disable-autoplay": {
|
"disable-autoplay": {
|
||||||
"description": "Започва песента в паузиран режим",
|
"description": "Започва песента в паузиран режим",
|
||||||
"menu": {
|
"menu": {
|
||||||
@ -437,7 +457,15 @@
|
|||||||
"hide-duration-left": "Скрий оставащото време",
|
"hide-duration-left": "Скрий оставащото време",
|
||||||
"hide-github-button": "Скрий бутона за линк към GitHub",
|
"hide-github-button": "Скрий бутона за линк към GitHub",
|
||||||
"play-on-youtube-music": "Възпроизведи в YouTube Music",
|
"play-on-youtube-music": "Възпроизведи в YouTube Music",
|
||||||
"set-inactivity-timeout": "Задай таймаут за неактивност"
|
"set-inactivity-timeout": "Задай таймаут за неактивност",
|
||||||
|
"set-status-display-type": {
|
||||||
|
"label": "Статус текст",
|
||||||
|
"submenu": {
|
||||||
|
"artist": "Слушам {artist}",
|
||||||
|
"title": "Слушам {song title}",
|
||||||
|
"youtube-music": "Слушам YouTube Music"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"name": "Дискорд Разширен статус",
|
"name": "Дискорд Разширен статус",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
@ -729,6 +757,7 @@
|
|||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": "Въведете ListenBrainz потребителски токен"
|
"token": "Въведете ListenBrainz потребителски токен"
|
||||||
},
|
},
|
||||||
|
"scrobble-alternative-artist": "Използвай алтернативни изпълнители",
|
||||||
"scrobble-alternative-title": "Използвай алтернативни заглавия",
|
"scrobble-alternative-title": "Използвай алтернативни заглавия",
|
||||||
"scrobble-other-media": "Скробъл на други медии"
|
"scrobble-other-media": "Скробъл на други медии"
|
||||||
},
|
},
|
||||||
@ -814,6 +843,14 @@
|
|||||||
"label": "Направете текстовете перфектно синхронизирани",
|
"label": "Направете текстовете перфектно синхронизирани",
|
||||||
"tooltip": "Изчислете до милисекунда показването на следващия ред (може да има малък ефект върху производителността)"
|
"tooltip": "Изчислете до милисекунда показването на следващия ред (може да има малък ефект върху производителността)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "Предпочитан доставчик",
|
||||||
|
"none": {
|
||||||
|
"label": "Празно",
|
||||||
|
"tooltip": "Без предпочитан доставчик"
|
||||||
|
},
|
||||||
|
"tooltip": "Изберете доставчик по подразбиране"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "Романизиране на текстовете",
|
"label": "Романизиране на текстовете",
|
||||||
"tooltip": "Ако текстовете са на друг език, опитайте да покажете латинска версия."
|
"tooltip": "Ако текстовете са на друг език, опитайте да покажете латинска версия."
|
||||||
@ -846,6 +883,27 @@
|
|||||||
"description": "Добавя уиджет за TouchBar за потребители на macOS",
|
"description": "Добавя уиджет за TouchBar за потребители на macOS",
|
||||||
"name": "TouchBar"
|
"name": "TouchBar"
|
||||||
},
|
},
|
||||||
|
"transparent-player": {
|
||||||
|
"description": "Прави прозореца на приложението прозрачен",
|
||||||
|
"menu": {
|
||||||
|
"opacity": {
|
||||||
|
"label": "Прозрачност",
|
||||||
|
"submenu": {
|
||||||
|
"percent": "{{opacity}}%"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"label": "Тип",
|
||||||
|
"submenu": {
|
||||||
|
"acrylic": "Акрил",
|
||||||
|
"mica": "Слюда",
|
||||||
|
"none": "Празно",
|
||||||
|
"tabbed": "С раздели"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Прозрачен плейър"
|
||||||
|
},
|
||||||
"tuna-obs": {
|
"tuna-obs": {
|
||||||
"description": "Интеграция с плъгина Tuna за OBS",
|
"description": "Интеграция с плъгина Tuna за OBS",
|
||||||
"name": "Tuna OBS"
|
"name": "Tuna OBS"
|
||||||
|
|||||||
@ -421,6 +421,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"custom-output-device": {
|
||||||
|
"description": "Configura un dispositiu multimèdia de sortida personalitzat per a cançons",
|
||||||
|
"menu": {
|
||||||
|
"device-selector": "Selecciona un dispositiu"
|
||||||
|
},
|
||||||
|
"name": "Dispositiu de sortida personalitzat",
|
||||||
|
"prompt": {
|
||||||
|
"device-selector": {
|
||||||
|
"label": "Trieu el dispositiu de sortida que s'utilitzarà",
|
||||||
|
"title": "Escull el dispositiu de sortida"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disable-autoplay": {
|
"disable-autoplay": {
|
||||||
"description": "Fa que la cançó comenci en mode «pausat»",
|
"description": "Fa que la cançó comenci en mode «pausat»",
|
||||||
"menu": {
|
"menu": {
|
||||||
@ -444,7 +457,15 @@
|
|||||||
"hide-duration-left": "Amaga la durada restant",
|
"hide-duration-left": "Amaga la durada restant",
|
||||||
"hide-github-button": "Amaga el botó de l'enllaç a GitHub",
|
"hide-github-button": "Amaga el botó de l'enllaç a GitHub",
|
||||||
"play-on-youtube-music": "Reprodueix a YouTube Music",
|
"play-on-youtube-music": "Reprodueix a YouTube Music",
|
||||||
"set-inactivity-timeout": "Estableix temps d'espera d'inactivitat"
|
"set-inactivity-timeout": "Estableix temps d'espera d'inactivitat",
|
||||||
|
"set-status-display-type": {
|
||||||
|
"label": "Text d'estat",
|
||||||
|
"submenu": {
|
||||||
|
"artist": "Escoltant {artist}",
|
||||||
|
"title": "Escoltant {song title}",
|
||||||
|
"youtube-music": "Escoltant YouTube Music"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"name": "Estat d'activitat de Discord",
|
"name": "Estat d'activitat de Discord",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
@ -615,10 +636,10 @@
|
|||||||
"name": "Navegació",
|
"name": "Navegació",
|
||||||
"templates": {
|
"templates": {
|
||||||
"back": {
|
"back": {
|
||||||
"title": "Tornar a la pàgina anterior"
|
"title": "Pàgina anterior"
|
||||||
},
|
},
|
||||||
"forward": {
|
"forward": {
|
||||||
"title": "Anar a la pàgina següent"
|
"title": "Pàgina següent"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -736,6 +757,7 @@
|
|||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": "Introduir token d'usuari de ListenBrainz"
|
"token": "Introduir token d'usuari de ListenBrainz"
|
||||||
},
|
},
|
||||||
|
"scrobble-alternative-artist": "Utilitza artistes alternatius",
|
||||||
"scrobble-alternative-title": "Useu títols alternatius",
|
"scrobble-alternative-title": "Useu títols alternatius",
|
||||||
"scrobble-other-media": "Scrobble amb altres mitjans"
|
"scrobble-other-media": "Scrobble amb altres mitjans"
|
||||||
},
|
},
|
||||||
@ -821,6 +843,14 @@
|
|||||||
"label": "Fes que les lletres es sincronitzin a la perfecció",
|
"label": "Fes que les lletres es sincronitzin a la perfecció",
|
||||||
"tooltip": "Calcula al mil·lisegon l'aparició de la següent línia (pot tenir un petit impacte en el rendiment)"
|
"tooltip": "Calcula al mil·lisegon l'aparició de la següent línia (pot tenir un petit impacte en el rendiment)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "Proveïdor preferit",
|
||||||
|
"none": {
|
||||||
|
"label": "Cap",
|
||||||
|
"tooltip": "Cap proveïdor preferit"
|
||||||
|
},
|
||||||
|
"tooltip": "Trieu el proveïdor predeterminat que voleu utilitzar"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "Romanitza les lletres",
|
"label": "Romanitza les lletres",
|
||||||
"tooltip": "Si les lletres són en un idioma diferent, intenta mostrar la versió amb alfabet llatí."
|
"tooltip": "Si les lletres són en un idioma diferent, intenta mostrar la versió amb alfabet llatí."
|
||||||
@ -853,6 +883,9 @@
|
|||||||
"description": "Afegeix un giny a la Touch Bar per usuaris de macOS",
|
"description": "Afegeix un giny a la Touch Bar per usuaris de macOS",
|
||||||
"name": "TouchBar"
|
"name": "TouchBar"
|
||||||
},
|
},
|
||||||
|
"transparent-player": {
|
||||||
|
"description": "Fa la finestra de l'aplicació transparent"
|
||||||
|
},
|
||||||
"tuna-obs": {
|
"tuna-obs": {
|
||||||
"description": "Integració amb l'extensió «Tuna» del OBS",
|
"description": "Integració amb l'extensió «Tuna» del OBS",
|
||||||
"name": "Tuna OBS"
|
"name": "Tuna OBS"
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
"load-all": "Načítání všech pluginů",
|
"load-all": "Načítání všech pluginů",
|
||||||
"load-failed": "Selhalo načtení \"{{pluginName}}\" pluginu",
|
"load-failed": "Selhalo načtení \"{{pluginName}}\" pluginu",
|
||||||
"loaded": "Plugin \"{{pluginName}}\" načten",
|
"loaded": "Plugin \"{{pluginName}}\" načten",
|
||||||
"unload-failed": "Selhalo unload \"{{pluginName}}\" pluginu",
|
"unload-failed": "Selhalo vypnutí \"{{pluginName}}\" pluginu",
|
||||||
"unloaded": "Plugin {{pluginName}} byl odnačten"
|
"unloaded": "Plugin {{pluginName}} byl odnačten"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,7 +8,8 @@
|
|||||||
"load-all": "Indlæser alle plugins",
|
"load-all": "Indlæser alle plugins",
|
||||||
"load-failed": "Fejl ved indlæsning af plugin \"{{pluginName}}\"",
|
"load-failed": "Fejl ved indlæsning af plugin \"{{pluginName}}\"",
|
||||||
"loaded": "Plugin \"{{pluginName}}\" indlæst",
|
"loaded": "Plugin \"{{pluginName}}\" indlæst",
|
||||||
"unload-failed": "Fejl ved unload af plugin \"{{pluginName}}\""
|
"unload-failed": "Fejl ved aflæsning af plugin \"{{pluginNavn}}\"",
|
||||||
|
"unloaded": "Plugin \"{{pluginNavn}}\" aflæssede"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -98,6 +99,7 @@
|
|||||||
"auto-reset-app-cache": "Nulstil app cache når appen starter",
|
"auto-reset-app-cache": "Nulstil app cache når appen starter",
|
||||||
"disable-hardware-acceleration": "Deaktiver hardware acceleration",
|
"disable-hardware-acceleration": "Deaktiver hardware acceleration",
|
||||||
"edit-config-json": "Rediger config.json",
|
"edit-config-json": "Rediger config.json",
|
||||||
|
"override-user-agent": "Erstat Bruger-Agent",
|
||||||
"restart-on-config-changes": "Genstart ved config ændringer",
|
"restart-on-config-changes": "Genstart ved config ændringer",
|
||||||
"set-proxy": {
|
"set-proxy": {
|
||||||
"label": "Indstil proxy",
|
"label": "Indstil proxy",
|
||||||
@ -130,22 +132,34 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"resume-on-start": "Genoptag sidste sang når appen starter",
|
"resume-on-start": "Genoptag sidste sang når appen starter",
|
||||||
|
"single-instance-lock": "Enkeltinstans lås",
|
||||||
"start-at-login": "Start ved login",
|
"start-at-login": "Start ved login",
|
||||||
"starting-page": {
|
"starting-page": {
|
||||||
"label": "Startside",
|
"label": "Startside",
|
||||||
"unset": "Ikke valgt"
|
"unset": "Ikke valgt"
|
||||||
},
|
},
|
||||||
"tray": {
|
"tray": {
|
||||||
|
"label": "Bakke",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
"disabled": "Deaktiveret",
|
"disabled": "Deaktiveret",
|
||||||
|
"enabled-and-hide-app": "Bakke aktiveret, og skjul programvindue",
|
||||||
"enabled-and-show-app": "Aktiver og vis app",
|
"enabled-and-show-app": "Aktiver og vis app",
|
||||||
"play-pause-on-click": "Start/Stop ved klik"
|
"play-pause-on-click": "Start/Stop ved klik"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"visual-tweaks": {
|
"visual-tweaks": {
|
||||||
|
"label": "Visuelle Justeringer",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
|
"custom-window-title": {
|
||||||
|
"label": "Tilpasset vindues titel",
|
||||||
|
"prompt": {
|
||||||
|
"label": "Indtast tilpasset vindues titel: (lad være top for deaktiveret)",
|
||||||
|
"placeholder": "Eksempel: YouTube Music"
|
||||||
|
}
|
||||||
|
},
|
||||||
"like-buttons": {
|
"like-buttons": {
|
||||||
"default": "Standard",
|
"default": "Standard",
|
||||||
|
"force-show": "Tving visning",
|
||||||
"hide": "Skjul",
|
"hide": "Skjul",
|
||||||
"label": "Like knapper"
|
"label": "Like knapper"
|
||||||
},
|
},
|
||||||
@ -153,11 +167,15 @@
|
|||||||
"theme": {
|
"theme": {
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"button": {
|
"button": {
|
||||||
|
"cancel": "Annuller",
|
||||||
"remove": "Fjern"
|
"remove": "Fjern"
|
||||||
}
|
},
|
||||||
|
"remove-theme": "Er du sikker på at du til fjerne det brugerdefinerede tema?",
|
||||||
|
"remove-theme-message": "Dette vil fjerne det brugerdefinerede tema"
|
||||||
},
|
},
|
||||||
"label": "Tema",
|
"label": "Tema",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
|
"import-css-file": "Importer brugerdefinerede CSS fil",
|
||||||
"no-theme": "Intet tema"
|
"no-theme": "Intet tema"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -173,6 +191,7 @@
|
|||||||
"view": {
|
"view": {
|
||||||
"label": "Vis",
|
"label": "Vis",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
|
"force-reload": "Tving Genindlæs",
|
||||||
"reload": "Genindlæs",
|
"reload": "Genindlæs",
|
||||||
"zoom-in": "Zoom ind",
|
"zoom-in": "Zoom ind",
|
||||||
"zoom-out": "Zoom ud"
|
"zoom-out": "Zoom ud"
|
||||||
|
|||||||
@ -421,6 +421,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"custom-output-device": {
|
||||||
|
"description": "Einen maßgeschneiderten Ausgabemedienträger für Lieder einrichten",
|
||||||
|
"menu": {
|
||||||
|
"device-selector": "Gerät auswählen"
|
||||||
|
},
|
||||||
|
"name": "Benutzerdefiniertes Ausgabegerät",
|
||||||
|
"prompt": {
|
||||||
|
"device-selector": {
|
||||||
|
"label": "Wähle das Ausgabegerät, welches benutzt werden soll",
|
||||||
|
"title": "Wähle ein Ausgabegerät"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disable-autoplay": {
|
"disable-autoplay": {
|
||||||
"description": "Startet Lied im pausierten Modus",
|
"description": "Startet Lied im pausierten Modus",
|
||||||
"menu": {
|
"menu": {
|
||||||
@ -444,7 +457,15 @@
|
|||||||
"hide-duration-left": "Verbleibende Zeit verstecken",
|
"hide-duration-left": "Verbleibende Zeit verstecken",
|
||||||
"hide-github-button": "Knopf mit Link zu GitHub ausblenden",
|
"hide-github-button": "Knopf mit Link zu GitHub ausblenden",
|
||||||
"play-on-youtube-music": "Auf YouTube Music abspielen",
|
"play-on-youtube-music": "Auf YouTube Music abspielen",
|
||||||
"set-inactivity-timeout": "Inaktivitätstimeout setzen"
|
"set-inactivity-timeout": "Inaktivitätstimeout setzen",
|
||||||
|
"set-status-display-type": {
|
||||||
|
"label": "Status Text",
|
||||||
|
"submenu": {
|
||||||
|
"artist": "Hört {artist} zu",
|
||||||
|
"title": "Du hörst {song title}",
|
||||||
|
"youtube-music": "Hört YouTube Music"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"name": "Discords Aktivitätsstatus",
|
"name": "Discords Aktivitätsstatus",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
@ -736,6 +757,7 @@
|
|||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": "ListenBrainz-Benutzer-Token eintragen"
|
"token": "ListenBrainz-Benutzer-Token eintragen"
|
||||||
},
|
},
|
||||||
|
"scrobble-alternative-artist": "Benutze Alternative Künstler",
|
||||||
"scrobble-alternative-title": "Nutze alternative Titel",
|
"scrobble-alternative-title": "Nutze alternative Titel",
|
||||||
"scrobble-other-media": "Andere Medien scrobbeln"
|
"scrobble-other-media": "Andere Medien scrobbeln"
|
||||||
},
|
},
|
||||||
@ -821,6 +843,14 @@
|
|||||||
"label": "Den Songtext perfekt synchronisieren",
|
"label": "Den Songtext perfekt synchronisieren",
|
||||||
"tooltip": "Auf die Millisekunde genau berechnen, wann die nächste Zeile angezeigt werden soll (Kann Einfluss auf die Leistung haben)"
|
"tooltip": "Auf die Millisekunde genau berechnen, wann die nächste Zeile angezeigt werden soll (Kann Einfluss auf die Leistung haben)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "bevorzugter Anbieter",
|
||||||
|
"none": {
|
||||||
|
"label": "Nichts",
|
||||||
|
"tooltip": "Kein bevorzugter Anbieter"
|
||||||
|
},
|
||||||
|
"tooltip": "Standardanbieter auswählen"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "Lateinische Umschrift anzeigen",
|
"label": "Lateinische Umschrift anzeigen",
|
||||||
"tooltip": "Wenn der Liedtext in einer anderen Schrift ist, zeige nach Möglichkeit eine Version in lateinischer Schrift an."
|
"tooltip": "Wenn der Liedtext in einer anderen Schrift ist, zeige nach Möglichkeit eine Version in lateinischer Schrift an."
|
||||||
@ -855,7 +885,6 @@
|
|||||||
},
|
},
|
||||||
"transparent-player": {
|
"transparent-player": {
|
||||||
"description": "Macht das Player-Fenster transparent",
|
"description": "Macht das Player-Fenster transparent",
|
||||||
"name": "Transparent Player",
|
|
||||||
"menu": {
|
"menu": {
|
||||||
"opacity": {
|
"opacity": {
|
||||||
"label": "Hintergrund-Sichtbarkeit",
|
"label": "Hintergrund-Sichtbarkeit",
|
||||||
@ -868,10 +897,12 @@
|
|||||||
"submenu": {
|
"submenu": {
|
||||||
"acrylic": "Acrylic",
|
"acrylic": "Acrylic",
|
||||||
"mica": "Mica",
|
"mica": "Mica",
|
||||||
|
"none": "Nichts",
|
||||||
"tabbed": "Tabbed"
|
"tabbed": "Tabbed"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"name": "Transparent Player"
|
||||||
},
|
},
|
||||||
"tuna-obs": {
|
"tuna-obs": {
|
||||||
"description": "Integration mit dem OBS-Plugin Tuna",
|
"description": "Integration mit dem OBS-Plugin Tuna",
|
||||||
|
|||||||
@ -2,14 +2,14 @@
|
|||||||
"common": {
|
"common": {
|
||||||
"console": {
|
"console": {
|
||||||
"plugins": {
|
"plugins": {
|
||||||
"execute-failed": "Error al ejecutar el plugin {{pluginName}}::{{contextName}}",
|
"execute-failed": "Error al ejecutar el complemento {{pluginName}}::{{contextName}}",
|
||||||
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} Ejecutó en {{ms}}ms",
|
"executed-at-ms": "Complemento {{pluginName}}::{{contextName}} Ejecutó en {{ms}}ms",
|
||||||
"initialize-failed": "Error al inicializar el plugin \"{{pluginName}}\"",
|
"initialize-failed": "Error al inicializar el complemento \"{{pluginName}}\"",
|
||||||
"load-all": "Cargando todos los plugins",
|
"load-all": "Cargando todos los complementos",
|
||||||
"load-failed": "Error al cargar el plugin \"{{pluginName}}\"",
|
"load-failed": "Error al cargar el complemento \"{{pluginName}}\"",
|
||||||
"loaded": "Plugin \"{{pluginName}}\" cargado",
|
"loaded": "Complementos \"{{pluginName}}\" cargado",
|
||||||
"unload-failed": "No se ha podido descargar el plugin \"{{pluginName}}\"",
|
"unload-failed": "No se ha podido descargar el complemento \"{{pluginName}}\"",
|
||||||
"unloaded": "Plugin \"{{pluginName}}\" descargado"
|
"unloaded": "Complemento \"{{pluginName}}\" descargado"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -53,7 +53,7 @@
|
|||||||
"later": "Más tarde",
|
"later": "Más tarde",
|
||||||
"restart-now": "Reiniciar ahora"
|
"restart-now": "Reiniciar ahora"
|
||||||
},
|
},
|
||||||
"detail": "El plugin \"{{pluginName}}\" requiere reiniciar para tomar efecto",
|
"detail": "El complemento \"{{pluginName}}\" requiere reiniciar para tomar efecto",
|
||||||
"message": "\"{{pluginName}}\" necesita reiniciar",
|
"message": "\"{{pluginName}}\" necesita reiniciar",
|
||||||
"title": "Se requiere reinicio"
|
"title": "Se requiere reinicio"
|
||||||
},
|
},
|
||||||
@ -185,7 +185,7 @@
|
|||||||
},
|
},
|
||||||
"plugins": {
|
"plugins": {
|
||||||
"enabled": "Habilitado",
|
"enabled": "Habilitado",
|
||||||
"label": "Plugins",
|
"label": "Complementos",
|
||||||
"new": "NUEVO"
|
"new": "NUEVO"
|
||||||
},
|
},
|
||||||
"view": {
|
"view": {
|
||||||
@ -457,7 +457,15 @@
|
|||||||
"hide-duration-left": "Ocultar la duración restante",
|
"hide-duration-left": "Ocultar la duración restante",
|
||||||
"hide-github-button": "Ocultar el botón de enlace a GitHub",
|
"hide-github-button": "Ocultar el botón de enlace a GitHub",
|
||||||
"play-on-youtube-music": "Reproducir en YouTube Music",
|
"play-on-youtube-music": "Reproducir en YouTube Music",
|
||||||
"set-inactivity-timeout": "Establecer tiempo de inactividad"
|
"set-inactivity-timeout": "Establecer tiempo de inactividad",
|
||||||
|
"set-status-display-type": {
|
||||||
|
"label": "Texto de estado",
|
||||||
|
"submenu": {
|
||||||
|
"artist": "Escuchando a {artist}",
|
||||||
|
"title": "Escuchando {song title}",
|
||||||
|
"youtube-music": "Escuchando YouTube Music"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"name": "Discord Rich Presence",
|
"name": "Discord Rich Presence",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
@ -482,7 +490,7 @@
|
|||||||
"ok": "OK"
|
"ok": "OK"
|
||||||
},
|
},
|
||||||
"detail": "({{playlistSize}} canciones)",
|
"detail": "({{playlistSize}} canciones)",
|
||||||
"message": "Descargando Playlist {{playlistTitle}}",
|
"message": "Descargando lista de reproducción {{playlistTitle}}",
|
||||||
"title": "Descarga iniciada"
|
"title": "Descarga iniciada"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -749,6 +757,7 @@
|
|||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": "Introduzca el token de usuario de ListenBrainz"
|
"token": "Introduzca el token de usuario de ListenBrainz"
|
||||||
},
|
},
|
||||||
|
"scrobble-alternative-artist": "Usar artistas alternativos",
|
||||||
"scrobble-alternative-title": "Usar títulos alternativos",
|
"scrobble-alternative-title": "Usar títulos alternativos",
|
||||||
"scrobble-other-media": "Hacer Scrobble sobre otros medios"
|
"scrobble-other-media": "Hacer Scrobble sobre otros medios"
|
||||||
},
|
},
|
||||||
@ -834,6 +843,14 @@
|
|||||||
"label": "Haz que la letra esté perfectamente sincronizada",
|
"label": "Haz que la letra esté perfectamente sincronizada",
|
||||||
"tooltip": "Calcular al milisegundo la visualización de la siguiente línea (puede tener un pequeño impacto en el rendimiento)"
|
"tooltip": "Calcular al milisegundo la visualización de la siguiente línea (puede tener un pequeño impacto en el rendimiento)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "Proveedor preferido",
|
||||||
|
"none": {
|
||||||
|
"label": "Ninguno",
|
||||||
|
"tooltip": "Ningún proveedor preferido"
|
||||||
|
},
|
||||||
|
"tooltip": "Elige el proveedor predeterminado que deseas usar"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "Romanizar letras",
|
"label": "Romanizar letras",
|
||||||
"tooltip": "Si la letra está en un idioma diferente, intenta mostrar una versión en latín."
|
"tooltip": "Si la letra está en un idioma diferente, intenta mostrar una versión en latín."
|
||||||
@ -866,8 +883,29 @@
|
|||||||
"description": "Añade un widget TouchBar para los usuarios de macOS",
|
"description": "Añade un widget TouchBar para los usuarios de macOS",
|
||||||
"name": "TouchBar"
|
"name": "TouchBar"
|
||||||
},
|
},
|
||||||
|
"transparent-player": {
|
||||||
|
"description": "Hace que la ventana de la aplicación sea transparente",
|
||||||
|
"menu": {
|
||||||
|
"opacity": {
|
||||||
|
"label": "Opacidad",
|
||||||
|
"submenu": {
|
||||||
|
"percent": "{{opacity}}%"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"label": "Tipo",
|
||||||
|
"submenu": {
|
||||||
|
"acrylic": "Acrílico",
|
||||||
|
"mica": "Mica",
|
||||||
|
"none": "Ninguno",
|
||||||
|
"tabbed": "Con pestañas"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Reproductor transparente"
|
||||||
|
},
|
||||||
"tuna-obs": {
|
"tuna-obs": {
|
||||||
"description": "Integración con el plugin Tuna de OBS",
|
"description": "Integración con el complemento Tuna de OBS",
|
||||||
"name": "Tuna OBS"
|
"name": "Tuna OBS"
|
||||||
},
|
},
|
||||||
"unobtrusive-player": {
|
"unobtrusive-player": {
|
||||||
|
|||||||
@ -150,6 +150,13 @@
|
|||||||
"visual-tweaks": {
|
"visual-tweaks": {
|
||||||
"label": "Mga Biswal na Tweak",
|
"label": "Mga Biswal na Tweak",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
|
"custom-window-title": {
|
||||||
|
"label": "Custom na window title",
|
||||||
|
"prompt": {
|
||||||
|
"label": "I-enter ang custom na window tile: (iwanang blanko para ma-disable)",
|
||||||
|
"placeholder": "Halimbawa: YouTube Music"
|
||||||
|
}
|
||||||
|
},
|
||||||
"like-buttons": {
|
"like-buttons": {
|
||||||
"default": "Default",
|
"default": "Default",
|
||||||
"force-show": "Pilitang ipakita",
|
"force-show": "Pilitang ipakita",
|
||||||
@ -378,6 +385,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"custom-output-device": {
|
||||||
|
"description": "I-configure ang custom na output media device para sa mga kanta",
|
||||||
|
"menu": {
|
||||||
|
"device-selector": "Pumili ng Device"
|
||||||
|
},
|
||||||
|
"name": "Custom na Output Device",
|
||||||
|
"prompt": {
|
||||||
|
"device-selector": {
|
||||||
|
"label": "Pumili ng output media device na gagamitin",
|
||||||
|
"title": "Pumili ng Output Device"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disable-autoplay": {
|
"disable-autoplay": {
|
||||||
"description": "Gawing simulan ang kanta sa \"naka-pause\" na mode",
|
"description": "Gawing simulan ang kanta sa \"naka-pause\" na mode",
|
||||||
"menu": {
|
"menu": {
|
||||||
@ -401,7 +421,14 @@
|
|||||||
"hide-duration-left": "Itago ang natitirang oras",
|
"hide-duration-left": "Itago ang natitirang oras",
|
||||||
"hide-github-button": "Itago ang button na GitHub link",
|
"hide-github-button": "Itago ang button na GitHub link",
|
||||||
"play-on-youtube-music": "Patugtugin sa YouTube Music",
|
"play-on-youtube-music": "Patugtugin sa YouTube Music",
|
||||||
"set-inactivity-timeout": "I-set ang inactivity timeout"
|
"set-inactivity-timeout": "I-set ang inactivity timeout",
|
||||||
|
"set-status-display-type": {
|
||||||
|
"submenu": {
|
||||||
|
"artist": "Nakikinig sa {artist}",
|
||||||
|
"title": "Nakikinig sa {song title}",
|
||||||
|
"youtube-music": "Kumikinig sa YouTube Music"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"prompt": {
|
"prompt": {
|
||||||
"set-inactivity-timeout": {
|
"set-inactivity-timeout": {
|
||||||
@ -649,6 +676,7 @@
|
|||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": "Ilagay ang user token ng ListenBrainz"
|
"token": "Ilagay ang user token ng ListenBrainz"
|
||||||
},
|
},
|
||||||
|
"scrobble-alternative-artist": "Gumamit ng mga alternatibong artist",
|
||||||
"scrobble-alternative-title": "Gumamit ng alternatibong mga title",
|
"scrobble-alternative-title": "Gumamit ng alternatibong mga title",
|
||||||
"scrobble-other-media": "Mag-Scrobble ng ibang media"
|
"scrobble-other-media": "Mag-Scrobble ng ibang media"
|
||||||
},
|
},
|
||||||
@ -728,6 +756,14 @@
|
|||||||
"label": "Gawing perpektong naka-sync ang lyrics",
|
"label": "Gawing perpektong naka-sync ang lyrics",
|
||||||
"tooltip": "Kalkulahin sa millisecond ang pagpapakita ng susunod na linya (maaaring magkaroon ng maliit na epekto sa performance)"
|
"tooltip": "Kalkulahin sa millisecond ang pagpapakita ng susunod na linya (maaaring magkaroon ng maliit na epekto sa performance)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "Napiling Provider",
|
||||||
|
"none": {
|
||||||
|
"label": "Wala",
|
||||||
|
"tooltip": "Walang napiling provider"
|
||||||
|
},
|
||||||
|
"tooltip": "Pumili ng default na provider para gagamitin"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "I-romanize ang lyrics",
|
"label": "I-romanize ang lyrics",
|
||||||
"tooltip": "Kung ang lyrics ay nasa ibang wika, subukang magpakita ng latin na bersyon."
|
"tooltip": "Kung ang lyrics ay nasa ibang wika, subukang magpakita ng latin na bersyon."
|
||||||
@ -758,6 +794,19 @@
|
|||||||
"touchbar": {
|
"touchbar": {
|
||||||
"description": "Idaragdag ang TouchBar na widget para sa mga user ng macOS"
|
"description": "Idaragdag ang TouchBar na widget para sa mga user ng macOS"
|
||||||
},
|
},
|
||||||
|
"transparent-player": {
|
||||||
|
"description": "Gawing transparent ang app window",
|
||||||
|
"menu": {
|
||||||
|
"type": {
|
||||||
|
"label": "Uri",
|
||||||
|
"submenu": {
|
||||||
|
"none": "Wala",
|
||||||
|
"tabbed": "Naka-tab"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Transparent na Player"
|
||||||
|
},
|
||||||
"tuna-obs": {
|
"tuna-obs": {
|
||||||
"description": "Integrasyon kasama ang Tuna na OBS plugin"
|
"description": "Integrasyon kasama ang Tuna na OBS plugin"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -79,7 +79,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"menu": {
|
"menu": {
|
||||||
"about": "À-propos",
|
"about": "À propos",
|
||||||
"navigation": {
|
"navigation": {
|
||||||
"label": "Navigation",
|
"label": "Navigation",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
@ -94,7 +94,7 @@
|
|||||||
"label": "Paramètres",
|
"label": "Paramètres",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
"advanced-options": {
|
"advanced-options": {
|
||||||
"label": "Options avancée",
|
"label": "Options avancées",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
"auto-reset-app-cache": "Réinitialiser le cache de l'application au démarrage",
|
"auto-reset-app-cache": "Réinitialiser le cache de l'application au démarrage",
|
||||||
"disable-hardware-acceleration": "Désactiver les accélérations matérielles",
|
"disable-hardware-acceleration": "Désactiver les accélérations matérielles",
|
||||||
@ -189,7 +189,7 @@
|
|||||||
"new": "NOUVEAU"
|
"new": "NOUVEAU"
|
||||||
},
|
},
|
||||||
"view": {
|
"view": {
|
||||||
"label": "Vue",
|
"label": "Fenêtre",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
"force-reload": "Forcer l'actualisation",
|
"force-reload": "Forcer l'actualisation",
|
||||||
"reload": "Actualiser",
|
"reload": "Actualiser",
|
||||||
@ -421,6 +421,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"custom-output-device": {
|
||||||
|
"description": "Configurer un périphérique de sortie personnalisé pour les morceaux",
|
||||||
|
"menu": {
|
||||||
|
"device-selector": "Sélectionner un appareil"
|
||||||
|
},
|
||||||
|
"name": "Périphérique de sortie personnalisé",
|
||||||
|
"prompt": {
|
||||||
|
"device-selector": {
|
||||||
|
"label": "Choisissez le périphérique de sortie à utiliser",
|
||||||
|
"title": "Sélectionner le périphérique de sortie"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disable-autoplay": {
|
"disable-autoplay": {
|
||||||
"description": "Fait démarrer la chanson en mode \"pause\"",
|
"description": "Fait démarrer la chanson en mode \"pause\"",
|
||||||
"menu": {
|
"menu": {
|
||||||
@ -444,7 +457,15 @@
|
|||||||
"hide-duration-left": "Masquer la durée restante",
|
"hide-duration-left": "Masquer la durée restante",
|
||||||
"hide-github-button": "Masquer le bouton du lien GitHub",
|
"hide-github-button": "Masquer le bouton du lien GitHub",
|
||||||
"play-on-youtube-music": "Jouer sur YouTube Music",
|
"play-on-youtube-music": "Jouer sur YouTube Music",
|
||||||
"set-inactivity-timeout": "Définir le délai d'inactivité"
|
"set-inactivity-timeout": "Définir le délai d'inactivité",
|
||||||
|
"set-status-display-type": {
|
||||||
|
"label": "Texte d'état",
|
||||||
|
"submenu": {
|
||||||
|
"artist": "Écoute {artiste}",
|
||||||
|
"title": "Écoute {titre de la chanson}",
|
||||||
|
"youtube-music": "Écoute YouTube Music"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"name": "Discord Rich Presence",
|
"name": "Discord Rich Presence",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
@ -736,6 +757,7 @@
|
|||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": "Entrer le token utilisateur de ListenBrainz"
|
"token": "Entrer le token utilisateur de ListenBrainz"
|
||||||
},
|
},
|
||||||
|
"scrobble-alternative-artist": "Utilisez d'autres artistes",
|
||||||
"scrobble-alternative-title": "Utiliser des titres alternatifs",
|
"scrobble-alternative-title": "Utiliser des titres alternatifs",
|
||||||
"scrobble-other-media": "Scrobbler d'autres médias"
|
"scrobble-other-media": "Scrobbler d'autres médias"
|
||||||
},
|
},
|
||||||
@ -743,7 +765,7 @@
|
|||||||
"prompt": {
|
"prompt": {
|
||||||
"lastfm": {
|
"lastfm": {
|
||||||
"api-key": "Clé API de Last.fm",
|
"api-key": "Clé API de Last.fm",
|
||||||
"api-secret": "API secret de Last.fm"
|
"api-secret": "Secret de l'API de Last.fm"
|
||||||
},
|
},
|
||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": {
|
"token": {
|
||||||
@ -774,7 +796,7 @@
|
|||||||
},
|
},
|
||||||
"skip-disliked-songs": {
|
"skip-disliked-songs": {
|
||||||
"description": "Passer les musiques que je n'aime pas",
|
"description": "Passer les musiques que je n'aime pas",
|
||||||
"name": "Passer Chansons Déplaisantes"
|
"name": "Passer les chansons « Je n'aime pas »"
|
||||||
},
|
},
|
||||||
"skip-silences": {
|
"skip-silences": {
|
||||||
"description": "Ignorer automatiquement les sections de silence dans les chansons",
|
"description": "Ignorer automatiquement les sections de silence dans les chansons",
|
||||||
@ -821,6 +843,14 @@
|
|||||||
"label": "Rend les paroles parfaitement synchronisées",
|
"label": "Rend les paroles parfaitement synchronisées",
|
||||||
"tooltip": "Calcul à la milliseconde près l'affichage de la ligne suivante (peut avoir un faible impact sur les performances)"
|
"tooltip": "Calcul à la milliseconde près l'affichage de la ligne suivante (peut avoir un faible impact sur les performances)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "Fournisseur privilégié",
|
||||||
|
"none": {
|
||||||
|
"label": "Aucun",
|
||||||
|
"tooltip": "Aucun fournisseur privilégié"
|
||||||
|
},
|
||||||
|
"tooltip": "Choisissez le fournisseur par défaut à utiliser"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "Romaniser les paroles",
|
"label": "Romaniser les paroles",
|
||||||
"tooltip": "Si les paroles sont dans une autre langue, essayez de les afficher dans une version latine."
|
"tooltip": "Si les paroles sont dans une autre langue, essayez de les afficher dans une version latine."
|
||||||
@ -853,6 +883,27 @@
|
|||||||
"description": "Ajoute un widget TouchBar pour les utilisateurs de macOS",
|
"description": "Ajoute un widget TouchBar pour les utilisateurs de macOS",
|
||||||
"name": "TouchBar"
|
"name": "TouchBar"
|
||||||
},
|
},
|
||||||
|
"transparent-player": {
|
||||||
|
"description": "Rend la fenêtre de l'application transparente",
|
||||||
|
"menu": {
|
||||||
|
"opacity": {
|
||||||
|
"label": "Opacité",
|
||||||
|
"submenu": {
|
||||||
|
"percent": "{{opacity}}%"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"label": "Type",
|
||||||
|
"submenu": {
|
||||||
|
"acrylic": "Acrylique",
|
||||||
|
"mica": "Mica",
|
||||||
|
"none": "Aucun",
|
||||||
|
"tabbed": "À onglets"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Lecteur transparent"
|
||||||
|
},
|
||||||
"tuna-obs": {
|
"tuna-obs": {
|
||||||
"description": "Intégration avec le plugin OBS Tuna",
|
"description": "Intégration avec le plugin OBS Tuna",
|
||||||
"name": "Tuna OBS"
|
"name": "Tuna OBS"
|
||||||
|
|||||||
@ -150,6 +150,13 @@
|
|||||||
"visual-tweaks": {
|
"visual-tweaks": {
|
||||||
"label": "Penyesuaian Visual",
|
"label": "Penyesuaian Visual",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
|
"custom-window-title": {
|
||||||
|
"label": "Judul jendela kustom",
|
||||||
|
"prompt": {
|
||||||
|
"label": "Masukkan judul jendela kustom (kosongkan untuk menonaktifkan)",
|
||||||
|
"placeholder": "Contoh: YouTube Music"
|
||||||
|
}
|
||||||
|
},
|
||||||
"like-buttons": {
|
"like-buttons": {
|
||||||
"default": "Standar",
|
"default": "Standar",
|
||||||
"force-show": "Pertunjukan paksa",
|
"force-show": "Pertunjukan paksa",
|
||||||
@ -414,6 +421,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"custom-output-device": {
|
||||||
|
"menu": {
|
||||||
|
"device-selector": "Pilih Perangkat"
|
||||||
|
},
|
||||||
|
"name": "Perangkat Keluaran Kustom",
|
||||||
|
"prompt": {
|
||||||
|
"device-selector": {
|
||||||
|
"label": "Pilih perangkat media keluaran yang akan digunakan",
|
||||||
|
"title": "Pilih Perangkat Keluaran"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disable-autoplay": {
|
"disable-autoplay": {
|
||||||
"description": "Buat lagu mulai dalam mode \"jeda\"",
|
"description": "Buat lagu mulai dalam mode \"jeda\"",
|
||||||
"menu": {
|
"menu": {
|
||||||
@ -437,7 +456,15 @@
|
|||||||
"hide-duration-left": "Sembunyikan sisa durasi",
|
"hide-duration-left": "Sembunyikan sisa durasi",
|
||||||
"hide-github-button": "Sembunyikan tombol link GitHub",
|
"hide-github-button": "Sembunyikan tombol link GitHub",
|
||||||
"play-on-youtube-music": "Mainkan di YouTube Music",
|
"play-on-youtube-music": "Mainkan di YouTube Music",
|
||||||
"set-inactivity-timeout": "Tetapkan batas waktu tidak aktif"
|
"set-inactivity-timeout": "Tetapkan batas waktu tidak aktif",
|
||||||
|
"set-status-display-type": {
|
||||||
|
"label": "Teks status",
|
||||||
|
"submenu": {
|
||||||
|
"artist": "Sedang mendengarkan {artist}",
|
||||||
|
"title": "Sedang mendengarkan {song title}",
|
||||||
|
"youtube-music": "Sedang mendengarkan YouTube Music"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"name": "Rich Presence Discord",
|
"name": "Rich Presence Discord",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
@ -454,16 +481,16 @@
|
|||||||
"buttons": {
|
"buttons": {
|
||||||
"ok": "Oke"
|
"ok": "Oke"
|
||||||
},
|
},
|
||||||
"message": "Argh! Maaf, dowloadnya gagal…",
|
"message": "Argh! Maaf, dowload gagal…",
|
||||||
"title": "Downloadnya error!"
|
"title": "Terjadi kesalahan dalam unduhan!"
|
||||||
},
|
},
|
||||||
"start-download-playlist": {
|
"start-download-playlist": {
|
||||||
"buttons": {
|
"buttons": {
|
||||||
"ok": "Oke"
|
"ok": "Oke"
|
||||||
},
|
},
|
||||||
"detail": "({{playlistSize}} lagu-lagu)",
|
"detail": "({{playlistSize}} lagu-lagu)",
|
||||||
"message": "Mengunduh Playlist {{playlistTitle}}",
|
"message": "Mengunduh Daftar Putar {{playlistTitle}}",
|
||||||
"title": "Download dimulai"
|
"title": "Pengunduhan dimulai"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"feedback": {
|
"feedback": {
|
||||||
@ -474,8 +501,8 @@
|
|||||||
"download-progress": "Mengunduh: {{percent}}%",
|
"download-progress": "Mengunduh: {{percent}}%",
|
||||||
"downloading": "Mengunduh…",
|
"downloading": "Mengunduh…",
|
||||||
"downloading-counter": "Mengunduh {{current}}/{{total}}…",
|
"downloading-counter": "Mengunduh {{current}}/{{total}}…",
|
||||||
"downloading-playlist": "Mengunduh playlist \"{{playlistTitle}}\" - {{playlistSize}} lagu ({{playlistId}})",
|
"downloading-playlist": "Mengunduh Daftar Putar \"{{playlistTitle}}\" - {{playlistSize}} lagu-lagu ({{playlistId}})",
|
||||||
"error-while-downloading": "Gagal mengunduh \"{{author}} - {{title}}\": {{error}}",
|
"error-while-downloading": "Gagal dalam mengunduh \"{{author}} - {{title}}\": {{error}}",
|
||||||
"folder-already-exists": "Folder {{playlistFolder}} sudah ada",
|
"folder-already-exists": "Folder {{playlistFolder}} sudah ada",
|
||||||
"getting-playlist-info": "Mendapatkan informasi playlist…",
|
"getting-playlist-info": "Mendapatkan informasi playlist…",
|
||||||
"loading": "Memuat…",
|
"loading": "Memuat…",
|
||||||
@ -530,7 +557,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"name": "Equalizer"
|
"name": "Ekualiser"
|
||||||
},
|
},
|
||||||
"exponential-volume": {
|
"exponential-volume": {
|
||||||
"description": "Buat penggeser volume menjadi eksponen sehingga memudahkan memilih volume yang lebih rendah.",
|
"description": "Buat penggeser volume menjadi eksponen sehingga memudahkan memilih volume yang lebih rendah.",
|
||||||
|
|||||||
@ -150,6 +150,13 @@
|
|||||||
"visual-tweaks": {
|
"visual-tweaks": {
|
||||||
"label": "Miglioramenti visivi",
|
"label": "Miglioramenti visivi",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
|
"custom-window-title": {
|
||||||
|
"label": "Personalizza titolo finestra",
|
||||||
|
"prompt": {
|
||||||
|
"label": "Inserisci un titolo della finestra personalizzato: (lascia vuoto per disattivare)",
|
||||||
|
"placeholder": "Esempio: YouTube Music"
|
||||||
|
}
|
||||||
|
},
|
||||||
"like-buttons": {
|
"like-buttons": {
|
||||||
"default": "Predefinito",
|
"default": "Predefinito",
|
||||||
"force-show": "Forza la visualizzazione",
|
"force-show": "Forza la visualizzazione",
|
||||||
@ -414,6 +421,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"custom-output-device": {
|
||||||
|
"description": "Scegli da quale uscita audio vuoi riprodurre i brani",
|
||||||
|
"menu": {
|
||||||
|
"device-selector": "Seleziona un'uscita"
|
||||||
|
},
|
||||||
|
"name": "Dispositivo di Output Personalizzato",
|
||||||
|
"prompt": {
|
||||||
|
"device-selector": {
|
||||||
|
"label": "Scegli il dispositivo d'output da utilizzare",
|
||||||
|
"title": "Scegli il dispositivo d'output"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disable-autoplay": {
|
"disable-autoplay": {
|
||||||
"description": "Fa iniziare i brani in modalità \"pausa\"",
|
"description": "Fa iniziare i brani in modalità \"pausa\"",
|
||||||
"menu": {
|
"menu": {
|
||||||
@ -437,7 +457,15 @@
|
|||||||
"hide-duration-left": "Nascondi la durata rimasta",
|
"hide-duration-left": "Nascondi la durata rimasta",
|
||||||
"hide-github-button": "Nascondi il pulsante link a GitHub",
|
"hide-github-button": "Nascondi il pulsante link a GitHub",
|
||||||
"play-on-youtube-music": "Riproduci su YouTube Music",
|
"play-on-youtube-music": "Riproduci su YouTube Music",
|
||||||
"set-inactivity-timeout": "Imposta il timeout di inattività"
|
"set-inactivity-timeout": "Imposta il timeout di inattività",
|
||||||
|
"set-status-display-type": {
|
||||||
|
"label": "Testo dello status",
|
||||||
|
"submenu": {
|
||||||
|
"artist": "Stai ascoltando {artist}",
|
||||||
|
"title": "Stai ascoltando {song title}",
|
||||||
|
"youtube-music": "Ascoltando YouTube Music"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"name": "Discord Rich Presence",
|
"name": "Discord Rich Presence",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
@ -729,6 +757,7 @@
|
|||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": "Inserire il token utente per ListenBrainz"
|
"token": "Inserire il token utente per ListenBrainz"
|
||||||
},
|
},
|
||||||
|
"scrobble-alternative-artist": "Usa artisti alternativi",
|
||||||
"scrobble-alternative-title": "Usa titoli alternativi",
|
"scrobble-alternative-title": "Usa titoli alternativi",
|
||||||
"scrobble-other-media": "Scrobble altri media"
|
"scrobble-other-media": "Scrobble altri media"
|
||||||
},
|
},
|
||||||
@ -814,6 +843,14 @@
|
|||||||
"label": "Rendi i testi perfettamente sincronizzati",
|
"label": "Rendi i testi perfettamente sincronizzati",
|
||||||
"tooltip": "Calcola al millisecondo la visualizzazione della riga successiva (può avere un piccolo impatto sulle prestazioni)"
|
"tooltip": "Calcola al millisecondo la visualizzazione della riga successiva (può avere un piccolo impatto sulle prestazioni)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "Provider preferito",
|
||||||
|
"none": {
|
||||||
|
"label": "Nessuno",
|
||||||
|
"tooltip": "Nessun provider preferito"
|
||||||
|
},
|
||||||
|
"tooltip": "Scegli quale provider predefinito utilizzare"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "Testi in caratteri occidentali",
|
"label": "Testi in caratteri occidentali",
|
||||||
"tooltip": "Qualora il testo fosse scritto in una lingua non occidentale, prova a visualizzarlo in caratteri latini."
|
"tooltip": "Qualora il testo fosse scritto in una lingua non occidentale, prova a visualizzarlo in caratteri latini."
|
||||||
@ -846,6 +883,27 @@
|
|||||||
"description": "Aggiunge un widget TouchBar per gli utenti macOS",
|
"description": "Aggiunge un widget TouchBar per gli utenti macOS",
|
||||||
"name": "Touch Bar (per MacOS)"
|
"name": "Touch Bar (per MacOS)"
|
||||||
},
|
},
|
||||||
|
"transparent-player": {
|
||||||
|
"description": "Rende trasparente la finestra del programma",
|
||||||
|
"menu": {
|
||||||
|
"opacity": {
|
||||||
|
"label": "Opacità",
|
||||||
|
"submenu": {
|
||||||
|
"percent": "{{opacity}}%"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"label": "Tipo",
|
||||||
|
"submenu": {
|
||||||
|
"acrylic": "Acrilico",
|
||||||
|
"mica": "Mica",
|
||||||
|
"none": "Nessuno",
|
||||||
|
"tabbed": "In scheda"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Player Trasparente"
|
||||||
|
},
|
||||||
"tuna-obs": {
|
"tuna-obs": {
|
||||||
"description": "Integrazione con il plugin OBS Tuna",
|
"description": "Integrazione con il plugin OBS Tuna",
|
||||||
"name": "Tuna OBS"
|
"name": "Tuna OBS"
|
||||||
|
|||||||
@ -59,6 +59,7 @@
|
|||||||
},
|
},
|
||||||
"unresponsive": {
|
"unresponsive": {
|
||||||
"buttons": {
|
"buttons": {
|
||||||
|
"quit": "ഉപേക്ഷിക്കുക",
|
||||||
"relaunch": "പുനരാരംഭിക്കുക",
|
"relaunch": "പുനരാരംഭിക്കുക",
|
||||||
"wait": "കാത്തിരിക്കൂ"
|
"wait": "കാത്തിരിക്കൂ"
|
||||||
},
|
},
|
||||||
@ -109,5 +110,22 @@
|
|||||||
"enabled": "പ്രവർത്തനക്ഷമമാക്കി"
|
"enabled": "പ്രവർത്തനക്ഷമമാക്കി"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"plugins": {
|
||||||
|
"video-toggle": {
|
||||||
|
"menu": {
|
||||||
|
"align": {
|
||||||
|
"label": "ക്രമപ്പെടുത്തൽ",
|
||||||
|
"submenu": {
|
||||||
|
"left": "ഇടത്",
|
||||||
|
"middle": "മധ്യഭാഗം",
|
||||||
|
"right": "വലത്"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"templates": {
|
||||||
|
"button-video": "വീഡിയോ"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -821,6 +821,11 @@
|
|||||||
"label": "Zorg ervoor dat de songteksten perfect gesynchroniseerd zijn",
|
"label": "Zorg ervoor dat de songteksten perfect gesynchroniseerd zijn",
|
||||||
"tooltip": "Bereken tot op de milliseconde de weergave van de volgende regel (kan een kleine impact hebben op de prestaties)"
|
"tooltip": "Bereken tot op de milliseconde de weergave van de volgende regel (kan een kleine impact hebben op de prestaties)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"none": {
|
||||||
|
"tooltip": "Geen provider beschikbaar"
|
||||||
|
}
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "Romaniseer songtekst",
|
"label": "Romaniseer songtekst",
|
||||||
"tooltip": "Als de songtekst in een andere taal is, probeer dan een Latijnse versie weer te geven."
|
"tooltip": "Als de songtekst in een andere taal is, probeer dan een Latijnse versie weer te geven."
|
||||||
|
|||||||
@ -757,6 +757,7 @@
|
|||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": "Insira o token de usuário ListenBrainz"
|
"token": "Insira o token de usuário ListenBrainz"
|
||||||
},
|
},
|
||||||
|
"scrobble-alternative-artist": "Use artistas alternativos",
|
||||||
"scrobble-alternative-title": "Usar títulos alternativos",
|
"scrobble-alternative-title": "Usar títulos alternativos",
|
||||||
"scrobble-other-media": "Scrobble outras mídias"
|
"scrobble-other-media": "Scrobble outras mídias"
|
||||||
},
|
},
|
||||||
@ -842,6 +843,14 @@
|
|||||||
"label": "Deixa as letras perfeitamente sincronizadas",
|
"label": "Deixa as letras perfeitamente sincronizadas",
|
||||||
"tooltip": "Calcular até o milissegundo a exibição da próxima linha (pode ter um pequeno impacto no desempenho)"
|
"tooltip": "Calcular até o milissegundo a exibição da próxima linha (pode ter um pequeno impacto no desempenho)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "Provedor Preferido",
|
||||||
|
"none": {
|
||||||
|
"label": "Nenhum",
|
||||||
|
"tooltip": "Sem provedor preferido"
|
||||||
|
},
|
||||||
|
"tooltip": "Escolha o provedor padrão para uso"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "Letras romanizadas",
|
"label": "Letras romanizadas",
|
||||||
"tooltip": "Se as letras estiverem em um idioma diferente, tente exibir uma versão latina."
|
"tooltip": "Se as letras estiverem em um idioma diferente, tente exibir uma versão latina."
|
||||||
@ -874,6 +883,27 @@
|
|||||||
"description": "Adiciona um widget TouchBar para usuários do macOS",
|
"description": "Adiciona um widget TouchBar para usuários do macOS",
|
||||||
"name": "TouchBar"
|
"name": "TouchBar"
|
||||||
},
|
},
|
||||||
|
"transparent-player": {
|
||||||
|
"description": "Faz a janela do app transparente",
|
||||||
|
"menu": {
|
||||||
|
"opacity": {
|
||||||
|
"label": "Opacidade",
|
||||||
|
"submenu": {
|
||||||
|
"percent": "{{opacity}}%"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"label": "Tipo",
|
||||||
|
"submenu": {
|
||||||
|
"acrylic": "Acrílico",
|
||||||
|
"mica": "Mica",
|
||||||
|
"none": "Nenhum",
|
||||||
|
"tabbed": "Em abas"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Player transparente"
|
||||||
|
},
|
||||||
"tuna-obs": {
|
"tuna-obs": {
|
||||||
"description": "Integração com o plugin Tuna do OBS",
|
"description": "Integração com o plugin Tuna do OBS",
|
||||||
"name": "Tuna OBS"
|
"name": "Tuna OBS"
|
||||||
|
|||||||
@ -136,13 +136,13 @@
|
|||||||
"start-at-login": "Iniciar com o sistema",
|
"start-at-login": "Iniciar com o sistema",
|
||||||
"starting-page": {
|
"starting-page": {
|
||||||
"label": "Página inicial",
|
"label": "Página inicial",
|
||||||
"unset": "Limpar"
|
"unset": "Indefinida"
|
||||||
},
|
},
|
||||||
"tray": {
|
"tray": {
|
||||||
"label": "Área de notificação",
|
"label": "Área de notificação",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
"disabled": "Desativada",
|
"disabled": "Desativada",
|
||||||
"enabled-and-hide-app": "Ativado e ocultar aplicação",
|
"enabled-and-hide-app": "Ativada e ocultar aplicação",
|
||||||
"enabled-and-show-app": "Ativada e a mostrar aplicação",
|
"enabled-and-show-app": "Ativada e a mostrar aplicação",
|
||||||
"play-pause-on-click": "Reprodução/Pausa ao clicar"
|
"play-pause-on-click": "Reprodução/Pausa ao clicar"
|
||||||
}
|
}
|
||||||
@ -421,6 +421,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"custom-output-device": {
|
||||||
|
"description": "Configurar um dispositivo de saída padrão para as músicas",
|
||||||
|
"menu": {
|
||||||
|
"device-selector": "Selecionar dispositivo"
|
||||||
|
},
|
||||||
|
"name": "Dispositivo personalizado",
|
||||||
|
"prompt": {
|
||||||
|
"device-selector": {
|
||||||
|
"label": "Escolha o dispositivo de saída a utilizar",
|
||||||
|
"title": "Selecione o dispositivo de saída"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disable-autoplay": {
|
"disable-autoplay": {
|
||||||
"description": "Faz com que a música inicie no modo \"pausa\"",
|
"description": "Faz com que a música inicie no modo \"pausa\"",
|
||||||
"menu": {
|
"menu": {
|
||||||
@ -444,7 +457,15 @@
|
|||||||
"hide-duration-left": "Ocultar tempo restante",
|
"hide-duration-left": "Ocultar tempo restante",
|
||||||
"hide-github-button": "Ocultar botão GitHub",
|
"hide-github-button": "Ocultar botão GitHub",
|
||||||
"play-on-youtube-music": "Reproduzir em YouTube Music",
|
"play-on-youtube-music": "Reproduzir em YouTube Music",
|
||||||
"set-inactivity-timeout": "Definir tempo de inatividade"
|
"set-inactivity-timeout": "Definir tempo de inatividade",
|
||||||
|
"set-status-display-type": {
|
||||||
|
"label": "Texto de estado",
|
||||||
|
"submenu": {
|
||||||
|
"artist": "A ouvir {artist}",
|
||||||
|
"title": "A ouvir {song title}",
|
||||||
|
"youtube-music": "A reproduzir YouTube Music"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"name": "Discord Rich Presence",
|
"name": "Discord Rich Presence",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
@ -736,6 +757,7 @@
|
|||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": "Introduza o 'token' do utilizador ListenBrainz"
|
"token": "Introduza o 'token' do utilizador ListenBrainz"
|
||||||
},
|
},
|
||||||
|
"scrobble-alternative-artist": "Utilizar artistas alternativos",
|
||||||
"scrobble-alternative-title": "Utilizar títulos alternativos",
|
"scrobble-alternative-title": "Utilizar títulos alternativos",
|
||||||
"scrobble-other-media": "Scrobble de outros conteúdos"
|
"scrobble-other-media": "Scrobble de outros conteúdos"
|
||||||
},
|
},
|
||||||
@ -821,6 +843,14 @@
|
|||||||
"label": "Sincronização perfeita da entre letra e música",
|
"label": "Sincronização perfeita da entre letra e música",
|
||||||
"tooltip": "Calcular, ao milissegundo, a exibição da linha seguinte (pode ter um pequeno impacto no desempenho)"
|
"tooltip": "Calcular, ao milissegundo, a exibição da linha seguinte (pode ter um pequeno impacto no desempenho)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "Serviço preferencial",
|
||||||
|
"none": {
|
||||||
|
"label": "Nenhum",
|
||||||
|
"tooltip": "Nenhum serviço preferencial"
|
||||||
|
},
|
||||||
|
"tooltip": "Escolha o serviço padrão a utilizar"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "Letras romanas",
|
"label": "Letras romanas",
|
||||||
"tooltip": "Se as letras estiverem num idioma diferente, tentar mostrar uma versão em latim"
|
"tooltip": "Se as letras estiverem num idioma diferente, tentar mostrar uma versão em latim"
|
||||||
@ -853,6 +883,27 @@
|
|||||||
"description": "Adicionar widget TouchBar para utilizadores macOS",
|
"description": "Adicionar widget TouchBar para utilizadores macOS",
|
||||||
"name": "TouchBar"
|
"name": "TouchBar"
|
||||||
},
|
},
|
||||||
|
"transparent-player": {
|
||||||
|
"description": "Tornar janela da aplicação transparente",
|
||||||
|
"menu": {
|
||||||
|
"opacity": {
|
||||||
|
"label": "Opacidade",
|
||||||
|
"submenu": {
|
||||||
|
"percent": "{{opacity}}%"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"label": "Tipo",
|
||||||
|
"submenu": {
|
||||||
|
"acrylic": "Acrílico",
|
||||||
|
"mica": "Mica",
|
||||||
|
"none": "Nada",
|
||||||
|
"tabbed": "Separadores"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Reprodutor transparente"
|
||||||
|
},
|
||||||
"tuna-obs": {
|
"tuna-obs": {
|
||||||
"description": "Integração com o plugin Tuna do OBS",
|
"description": "Integração com o plugin Tuna do OBS",
|
||||||
"name": "Tuna OBS"
|
"name": "Tuna OBS"
|
||||||
|
|||||||
@ -843,6 +843,14 @@
|
|||||||
"label": "Идеально синхронизировать слова",
|
"label": "Идеально синхронизировать слова",
|
||||||
"tooltip": "До миллисекунды рассчитывает отображение следующей строки(может оказать небольшое влияние на производительность)"
|
"tooltip": "До миллисекунды рассчитывает отображение следующей строки(может оказать небольшое влияние на производительность)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "Предпочитаемый источник",
|
||||||
|
"none": {
|
||||||
|
"label": "Никакой",
|
||||||
|
"tooltip": "Нет предпочитаемого источника"
|
||||||
|
},
|
||||||
|
"tooltip": "Выберите источник по умолчанию"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "Романизировать слова",
|
"label": "Романизировать слова",
|
||||||
"tooltip": "Если слова на другом языке, пытаться отображать версию на латинице."
|
"tooltip": "Если слова на другом языке, пытаться отображать версию на латинице."
|
||||||
|
|||||||
@ -421,6 +421,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"custom-output-device": {
|
||||||
|
"description": "Konfigurišite prilagođeni izlazni medijski uređaj za pesme",
|
||||||
|
"menu": {
|
||||||
|
"device-selector": "Izaberite uređaj"
|
||||||
|
},
|
||||||
|
"name": "Prilagođeni izlazni uređaj",
|
||||||
|
"prompt": {
|
||||||
|
"device-selector": {
|
||||||
|
"label": "Izaberite izlazni medijski uređaj koji će se koristiti",
|
||||||
|
"title": "Izaberite izlazni uređaj"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disable-autoplay": {
|
"disable-autoplay": {
|
||||||
"description": "Numere se pokreću u pauziranom režimu",
|
"description": "Numere se pokreću u pauziranom režimu",
|
||||||
"menu": {
|
"menu": {
|
||||||
@ -444,7 +457,15 @@
|
|||||||
"hide-duration-left": "Sakrij preostalo vreme",
|
"hide-duration-left": "Sakrij preostalo vreme",
|
||||||
"hide-github-button": "Sakrij dugme sa GitHub linkom",
|
"hide-github-button": "Sakrij dugme sa GitHub linkom",
|
||||||
"play-on-youtube-music": "Reprodukuj na YouTube Muzici",
|
"play-on-youtube-music": "Reprodukuj na YouTube Muzici",
|
||||||
"set-inactivity-timeout": "Podesi tajmer za neaktivnost"
|
"set-inactivity-timeout": "Podesi tajmer za neaktivnost",
|
||||||
|
"set-status-display-type": {
|
||||||
|
"label": "Tekst statusa",
|
||||||
|
"submenu": {
|
||||||
|
"artist": "Slušanje {artist}",
|
||||||
|
"title": "Slušanje {song title}",
|
||||||
|
"youtube-music": "Slušanje YouTube muzike"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"name": "Discord Bogato Prisustvo",
|
"name": "Discord Bogato Prisustvo",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
@ -736,6 +757,7 @@
|
|||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": "Unesi korisnički žeton za ListenBrainz"
|
"token": "Unesi korisnički žeton za ListenBrainz"
|
||||||
},
|
},
|
||||||
|
"scrobble-alternative-artist": "Koristi alternativne izvođače",
|
||||||
"scrobble-alternative-title": "Koristi alternativne naslove",
|
"scrobble-alternative-title": "Koristi alternativne naslove",
|
||||||
"scrobble-other-media": "Učetkaj druge medije"
|
"scrobble-other-media": "Učetkaj druge medije"
|
||||||
},
|
},
|
||||||
@ -821,6 +843,14 @@
|
|||||||
"label": "Učini da tekst pesme bude savršeno usklađen",
|
"label": "Učini da tekst pesme bude savršeno usklađen",
|
||||||
"tooltip": "Izračunaj do milisekunde prikaz sledeće linije teksta (može malo uticati na učinak)"
|
"tooltip": "Izračunaj do milisekunde prikaz sledeće linije teksta (može malo uticati na učinak)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "Preferirani dobavljač",
|
||||||
|
"none": {
|
||||||
|
"label": "Nijedan",
|
||||||
|
"tooltip": "Bez preferiranog dobavljača"
|
||||||
|
},
|
||||||
|
"tooltip": "Izaberite podrazumevanog dobavljača kog ćete koristiti"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "Romanizuj tekstove pesama",
|
"label": "Romanizuj tekstove pesama",
|
||||||
"tooltip": "Ako je tekst pesme na drugom jeziku, pokušaj da ga prikažeš u latiničnoj varijanti."
|
"tooltip": "Ako je tekst pesme na drugom jeziku, pokušaj da ga prikažeš u latiničnoj varijanti."
|
||||||
@ -853,6 +883,27 @@
|
|||||||
"description": "Dodaje dodatak dodirne trake za macOS korisnike",
|
"description": "Dodaje dodatak dodirne trake za macOS korisnike",
|
||||||
"name": "Dodirna Traka"
|
"name": "Dodirna Traka"
|
||||||
},
|
},
|
||||||
|
"transparent-player": {
|
||||||
|
"description": "Čini prozor aplikacije transparentnim",
|
||||||
|
"menu": {
|
||||||
|
"opacity": {
|
||||||
|
"label": "Neprozirnost",
|
||||||
|
"submenu": {
|
||||||
|
"percent": "{{opacity}}%"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"label": "Tip",
|
||||||
|
"submenu": {
|
||||||
|
"acrylic": "Akrilan",
|
||||||
|
"mica": "Mika",
|
||||||
|
"none": "Nijedan",
|
||||||
|
"tabbed": "Kartice"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Transparentni plejer"
|
||||||
|
},
|
||||||
"tuna-obs": {
|
"tuna-obs": {
|
||||||
"description": "Integracija sa OBS-ovim Tuna dodatkom",
|
"description": "Integracija sa OBS-ovim Tuna dodatkom",
|
||||||
"name": "Tuna OBS"
|
"name": "Tuna OBS"
|
||||||
|
|||||||
@ -86,7 +86,7 @@
|
|||||||
"copy-current-url": "Kopiera nuvarande länk",
|
"copy-current-url": "Kopiera nuvarande länk",
|
||||||
"go-back": "Gå tillbaka",
|
"go-back": "Gå tillbaka",
|
||||||
"go-forward": "Gå framåt",
|
"go-forward": "Gå framåt",
|
||||||
"quit": "Lämna",
|
"quit": "Avsluta",
|
||||||
"restart": "Starta om appen"
|
"restart": "Starta om appen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -421,6 +421,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"custom-output-device": {
|
||||||
|
"description": "Konfigurera en anpassad utdataenhet för låtar",
|
||||||
|
"menu": {
|
||||||
|
"device-selector": "Välj enhet"
|
||||||
|
},
|
||||||
|
"name": "Anpassad Utdataenhet",
|
||||||
|
"prompt": {
|
||||||
|
"device-selector": {
|
||||||
|
"label": "Välj den utdataenhet som ska användas",
|
||||||
|
"title": "Välj utdataenhet"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disable-autoplay": {
|
"disable-autoplay": {
|
||||||
"description": "Starta låt i \"pausat\" läge",
|
"description": "Starta låt i \"pausat\" läge",
|
||||||
"menu": {
|
"menu": {
|
||||||
@ -444,7 +457,15 @@
|
|||||||
"hide-duration-left": "Dölj återstående tid",
|
"hide-duration-left": "Dölj återstående tid",
|
||||||
"hide-github-button": "Dölj knapp för GitHub-länk",
|
"hide-github-button": "Dölj knapp för GitHub-länk",
|
||||||
"play-on-youtube-music": "Spela på YouTube Music",
|
"play-on-youtube-music": "Spela på YouTube Music",
|
||||||
"set-inactivity-timeout": "Ställ in inaktivitetstid"
|
"set-inactivity-timeout": "Ställ in inaktivitetstid",
|
||||||
|
"set-status-display-type": {
|
||||||
|
"label": "Statusmeddelande",
|
||||||
|
"submenu": {
|
||||||
|
"artist": "Lyssnar på {artist}",
|
||||||
|
"title": "Lyssnar på {song title}",
|
||||||
|
"youtube-music": "Lyssnar på YouTube Music"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"name": "Discord Aktivitetsdelning",
|
"name": "Discord Aktivitetsdelning",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
@ -736,6 +757,7 @@
|
|||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": "Ange ListenBrainz användartoken"
|
"token": "Ange ListenBrainz användartoken"
|
||||||
},
|
},
|
||||||
|
"scrobble-alternative-artist": "Använd alternativa artister",
|
||||||
"scrobble-alternative-title": "Använd alternativa titlar",
|
"scrobble-alternative-title": "Använd alternativa titlar",
|
||||||
"scrobble-other-media": "Scrobbla annan media"
|
"scrobble-other-media": "Scrobbla annan media"
|
||||||
},
|
},
|
||||||
@ -821,6 +843,14 @@
|
|||||||
"label": "Gör låttexterna perfekt synkroniserade",
|
"label": "Gör låttexterna perfekt synkroniserade",
|
||||||
"tooltip": "Beräkna till millisekunden när nästa rad ska visas (kan ha en liten inverkan på prestanda)"
|
"tooltip": "Beräkna till millisekunden när nästa rad ska visas (kan ha en liten inverkan på prestanda)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "Föredragen leverantör",
|
||||||
|
"none": {
|
||||||
|
"label": "Ingen",
|
||||||
|
"tooltip": "Ingen föredragen leverantör"
|
||||||
|
},
|
||||||
|
"tooltip": "Välj standardleverantör att använda"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "Romanisera låttexter",
|
"label": "Romanisera låttexter",
|
||||||
"tooltip": "Om låttexterna är på ett annat språk, försök visa en latinsk version."
|
"tooltip": "Om låttexterna är på ett annat språk, försök visa en latinsk version."
|
||||||
@ -853,6 +883,27 @@
|
|||||||
"description": "Lägger till en TouchBar-widget för macOS-användare",
|
"description": "Lägger till en TouchBar-widget för macOS-användare",
|
||||||
"name": "TouchBar"
|
"name": "TouchBar"
|
||||||
},
|
},
|
||||||
|
"transparent-player": {
|
||||||
|
"description": "Gör appfönstret genomskinligt",
|
||||||
|
"menu": {
|
||||||
|
"opacity": {
|
||||||
|
"label": "Opacitet",
|
||||||
|
"submenu": {
|
||||||
|
"percent": "{{opacity}}%"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"label": "Typ",
|
||||||
|
"submenu": {
|
||||||
|
"acrylic": "Akryl",
|
||||||
|
"mica": "Mica",
|
||||||
|
"none": "Ingen",
|
||||||
|
"tabbed": "Flikad"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Genomskinlig Spelare"
|
||||||
|
},
|
||||||
"tuna-obs": {
|
"tuna-obs": {
|
||||||
"description": "Integration med OBS-pluginprogrammet Tuna",
|
"description": "Integration med OBS-pluginprogrammet Tuna",
|
||||||
"name": "Tuna OBS"
|
"name": "Tuna OBS"
|
||||||
|
|||||||
@ -421,6 +421,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"custom-output-device": {
|
||||||
|
"description": "ตั้งค่าอุปกรณ์เสียงออกสำหรับเพลง",
|
||||||
|
"menu": {
|
||||||
|
"device-selector": "เลือกอุปกรณ์"
|
||||||
|
},
|
||||||
|
"name": "อุปกรณ์เสียงออกที่กำหนดเอง",
|
||||||
|
"prompt": {
|
||||||
|
"device-selector": {
|
||||||
|
"label": "เลือกอุปกรณ์เสียงออกที่ต้องการใช้",
|
||||||
|
"title": "เลือกอุปกรณ์เสียงออก"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disable-autoplay": {
|
"disable-autoplay": {
|
||||||
"description": "เริ่มเพลงในโหมดหยุดชั่วคราว",
|
"description": "เริ่มเพลงในโหมดหยุดชั่วคราว",
|
||||||
"menu": {
|
"menu": {
|
||||||
@ -744,6 +757,7 @@
|
|||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": "ใส่ user token ของ ListenBrainz"
|
"token": "ใส่ user token ของ ListenBrainz"
|
||||||
},
|
},
|
||||||
|
"scrobble-alternative-artist": "ใช้ชื่อศิลปินอื่น",
|
||||||
"scrobble-alternative-title": "ใช้ชื่ออื่น",
|
"scrobble-alternative-title": "ใช้ชื่ออื่น",
|
||||||
"scrobble-other-media": "บันทึกการเล่นสื่ออื่นๆ"
|
"scrobble-other-media": "บันทึกการเล่นสื่ออื่นๆ"
|
||||||
},
|
},
|
||||||
@ -829,6 +843,14 @@
|
|||||||
"label": "ให้เนื้อเพลงตรงกับเพลงเป๊ะๆ",
|
"label": "ให้เนื้อเพลงตรงกับเพลงเป๊ะๆ",
|
||||||
"tooltip": "คำนวณมิลิวินาทีในการแสดงบรรทัดถัดไป (มีผลเล็กน้อยกับประสิทธิภาพการทำงาน)"
|
"tooltip": "คำนวณมิลิวินาทีในการแสดงบรรทัดถัดไป (มีผลเล็กน้อยกับประสิทธิภาพการทำงาน)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "ผู้ให้บริการที่ต้องการ",
|
||||||
|
"none": {
|
||||||
|
"label": "ไม่มี",
|
||||||
|
"tooltip": "ไม่มีผู้ให้บริการที่ต้องการ"
|
||||||
|
},
|
||||||
|
"tooltip": "เลือกผู้ให้บริการที่ต้องการใช้งาน"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "เนื้อเพลงตัวด้วยอักษรโรมัน",
|
"label": "เนื้อเพลงตัวด้วยอักษรโรมัน",
|
||||||
"tooltip": "ถ้าหากเนื้อเพลงอยู่ในภาษาอื่น ลองเปลี่ยนการแสดงผลโดยใช้เวอร์ชั่นลาติน"
|
"tooltip": "ถ้าหากเนื้อเพลงอยู่ในภาษาอื่น ลองเปลี่ยนการแสดงผลโดยใช้เวอร์ชั่นลาติน"
|
||||||
@ -861,6 +883,27 @@
|
|||||||
"description": "เพิ่ม Widget บน TouchBar สำหรับผู้ใช้ macOS",
|
"description": "เพิ่ม Widget บน TouchBar สำหรับผู้ใช้ macOS",
|
||||||
"name": "TouchBar"
|
"name": "TouchBar"
|
||||||
},
|
},
|
||||||
|
"transparent-player": {
|
||||||
|
"description": "ทำให้หน้าต่างของแอปโปร่งใส",
|
||||||
|
"menu": {
|
||||||
|
"opacity": {
|
||||||
|
"label": "ความทึบแสง",
|
||||||
|
"submenu": {
|
||||||
|
"percent": "{{opacity}}%"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"label": "ประเภท",
|
||||||
|
"submenu": {
|
||||||
|
"acrylic": "อะคริลิก",
|
||||||
|
"mica": "ไมกา",
|
||||||
|
"none": "ไม่มี",
|
||||||
|
"tabbed": "Tabbed"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "ที่เล่นเพลงโปร่งใส"
|
||||||
|
},
|
||||||
"tuna-obs": {
|
"tuna-obs": {
|
||||||
"description": "ใช้งานร่วมกันกับปลั้กอิน Tuna บน OBS",
|
"description": "ใช้งานร่วมกันกับปลั้กอิน Tuna บน OBS",
|
||||||
"name": "Tuna OBS"
|
"name": "Tuna OBS"
|
||||||
|
|||||||
@ -843,6 +843,14 @@
|
|||||||
"label": "Şarkı sözlerini mükemmel şekilde senkronize edin",
|
"label": "Şarkı sözlerini mükemmel şekilde senkronize edin",
|
||||||
"tooltip": "Bir sonraki satırın görüntülenmesini milisaniyesine kadar hesaplayın (performans üzerinde küçük bir etkisi olabilir)"
|
"tooltip": "Bir sonraki satırın görüntülenmesini milisaniyesine kadar hesaplayın (performans üzerinde küçük bir etkisi olabilir)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "Tercih edilen Sağlayıcı",
|
||||||
|
"none": {
|
||||||
|
"label": "Hiçbiri",
|
||||||
|
"tooltip": "Varsayılan sağlayıcı yok"
|
||||||
|
},
|
||||||
|
"tooltip": "Kullanmak İçin varsayılan sağlayıcıyı seçin"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "Sözleri Romanize Et",
|
"label": "Sözleri Romanize Et",
|
||||||
"tooltip": "Sözler başka bir dilde gözüküyorsa, Latin versiyonunu dene."
|
"tooltip": "Sözler başka bir dilde gözüküyorsa, Latin versiyonunu dene."
|
||||||
|
|||||||
@ -843,6 +843,14 @@
|
|||||||
"label": "Làm cho lời bài hát được đồng bộ hoàn hảo",
|
"label": "Làm cho lời bài hát được đồng bộ hoàn hảo",
|
||||||
"tooltip": "Tính toán chính xác đến mili giây thời gian hiển thị dòng tiếp theo (có thể có tác động nhỏ đến hiệu suất)"
|
"tooltip": "Tính toán chính xác đến mili giây thời gian hiển thị dòng tiếp theo (có thể có tác động nhỏ đến hiệu suất)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "Nhà cung cấp ưa thích",
|
||||||
|
"none": {
|
||||||
|
"label": "Không có",
|
||||||
|
"tooltip": "Không có nhà cung cấp ưu thích"
|
||||||
|
},
|
||||||
|
"tooltip": "Chọn nhà cung cấp lời bài hát mặc định để sử dụng"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "Chuyển lời bài hát sang chữ Latin",
|
"label": "Chuyển lời bài hát sang chữ Latin",
|
||||||
"tooltip": "Nếu lời bài hát đang ở ngôn ngữ khác, thử hiển thị phiên bản bảng chữ cái La-tinh."
|
"tooltip": "Nếu lời bài hát đang ở ngôn ngữ khác, thử hiển thị phiên bản bảng chữ cái La-tinh."
|
||||||
|
|||||||
@ -843,6 +843,14 @@
|
|||||||
"label": "让滚动歌词完全同步",
|
"label": "让滚动歌词完全同步",
|
||||||
"tooltip": "以毫秒精度估算下句歌词的显示时间(可能对性能有小幅影响)"
|
"tooltip": "以毫秒精度估算下句歌词的显示时间(可能对性能有小幅影响)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "首选歌词源",
|
||||||
|
"none": {
|
||||||
|
"label": "无",
|
||||||
|
"tooltip": "没有首选的歌词源"
|
||||||
|
},
|
||||||
|
"tooltip": "选择默认要用的源"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "将歌词罗马化",
|
"label": "将歌词罗马化",
|
||||||
"tooltip": "如果歌词以不同语言显示,试着展示拉丁字母版本。"
|
"tooltip": "如果歌词以不同语言显示,试着展示拉丁字母版本。"
|
||||||
|
|||||||
@ -151,9 +151,9 @@
|
|||||||
"label": "介面設定",
|
"label": "介面設定",
|
||||||
"submenu": {
|
"submenu": {
|
||||||
"custom-window-title": {
|
"custom-window-title": {
|
||||||
"label": "客制化窗口標題",
|
"label": "客製化窗口標題",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
"label": "輸入客制化窗口標題: (留空讓其禁用)",
|
"label": "輸入客製化窗口標題: (留空讓其停用)",
|
||||||
"placeholder": "例如: YouTube 音樂"
|
"placeholder": "例如: YouTube 音樂"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -421,6 +421,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"custom-output-device": {
|
||||||
|
"description": "為歌曲設定自訂輸出媒體裝置",
|
||||||
|
"menu": {
|
||||||
|
"device-selector": "選擇裝置"
|
||||||
|
},
|
||||||
|
"name": "自訂輸出裝置",
|
||||||
|
"prompt": {
|
||||||
|
"device-selector": {
|
||||||
|
"label": "選擇要使用的輸出媒體裝置",
|
||||||
|
"title": "選擇輸出裝置"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"disable-autoplay": {
|
"disable-autoplay": {
|
||||||
"description": "讓歌曲開始時為暫停模式",
|
"description": "讓歌曲開始時為暫停模式",
|
||||||
"menu": {
|
"menu": {
|
||||||
@ -444,7 +457,15 @@
|
|||||||
"hide-duration-left": "隱藏音樂剩餘時間狀態",
|
"hide-duration-left": "隱藏音樂剩餘時間狀態",
|
||||||
"hide-github-button": "隱藏 GitHub 頁面按鈕",
|
"hide-github-button": "隱藏 GitHub 頁面按鈕",
|
||||||
"play-on-youtube-music": "顯示 Play on YouTube Music 按鈕",
|
"play-on-youtube-music": "顯示 Play on YouTube Music 按鈕",
|
||||||
"set-inactivity-timeout": "設定閒置狀態時長"
|
"set-inactivity-timeout": "設定閒置狀態時長",
|
||||||
|
"set-status-display-type": {
|
||||||
|
"label": "狀態文字",
|
||||||
|
"submenu": {
|
||||||
|
"artist": "正在聽 {artist}",
|
||||||
|
"title": "正在聽 {song title}",
|
||||||
|
"youtube-music": "正在聽 YouTube Music"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"name": "Discord 狀態",
|
"name": "Discord 狀態",
|
||||||
"prompt": {
|
"prompt": {
|
||||||
@ -645,8 +666,8 @@
|
|||||||
"name": "歌曲播放通知"
|
"name": "歌曲播放通知"
|
||||||
},
|
},
|
||||||
"performance-improvement": {
|
"performance-improvement": {
|
||||||
"description": "使用實驗性的腳本以優化效能",
|
"description": "使用實驗性的腳本以最佳化效能",
|
||||||
"name": "效能優化 [Beta]"
|
"name": "效能最佳化 [Beta]"
|
||||||
},
|
},
|
||||||
"picture-in-picture": {
|
"picture-in-picture": {
|
||||||
"description": "允許應用程式切換至子母畫面模式",
|
"description": "允許應用程式切換至子母畫面模式",
|
||||||
@ -724,7 +745,7 @@
|
|||||||
"dialog": {
|
"dialog": {
|
||||||
"lastfm": {
|
"lastfm": {
|
||||||
"auth-failed": {
|
"auth-failed": {
|
||||||
"message": "Last.fm 認證失敗\n將隱藏彈窗直到重啟。",
|
"message": "Last.fm 認證失敗\n將隱藏彈出視窗直到重啟。",
|
||||||
"title": "認證失敗"
|
"title": "認證失敗"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -736,6 +757,7 @@
|
|||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": "輸入 ListenBrainz 使用者憑證"
|
"token": "輸入 ListenBrainz 使用者憑證"
|
||||||
},
|
},
|
||||||
|
"scrobble-alternative-artist": "使用替代的藝人",
|
||||||
"scrobble-alternative-title": "使用替代歌曲標題",
|
"scrobble-alternative-title": "使用替代歌曲標題",
|
||||||
"scrobble-other-media": "紀錄其他媒體檔案"
|
"scrobble-other-media": "紀錄其他媒體檔案"
|
||||||
},
|
},
|
||||||
@ -743,7 +765,7 @@
|
|||||||
"prompt": {
|
"prompt": {
|
||||||
"lastfm": {
|
"lastfm": {
|
||||||
"api-key": "Last.fm API 金鑰",
|
"api-key": "Last.fm API 金鑰",
|
||||||
"api-secret": "Last.fm API 密鑰"
|
"api-secret": "Last.fm API 金鑰"
|
||||||
},
|
},
|
||||||
"listenbrainz": {
|
"listenbrainz": {
|
||||||
"token": {
|
"token": {
|
||||||
@ -821,6 +843,14 @@
|
|||||||
"label": "使歌詞完美同步",
|
"label": "使歌詞完美同步",
|
||||||
"tooltip": "更精確的計算下一行歌詞的顯示 (將會降低些許效能)"
|
"tooltip": "更精確的計算下一行歌詞的顯示 (將會降低些許效能)"
|
||||||
},
|
},
|
||||||
|
"preferred-provider": {
|
||||||
|
"label": "偏好提供者",
|
||||||
|
"none": {
|
||||||
|
"label": "無",
|
||||||
|
"tooltip": "沒有偏好的提供者"
|
||||||
|
},
|
||||||
|
"tooltip": "選擇要使用的預設提供者"
|
||||||
|
},
|
||||||
"romanization": {
|
"romanization": {
|
||||||
"label": "羅馬拼音化歌詞",
|
"label": "羅馬拼音化歌詞",
|
||||||
"tooltip": "如果歌詞使用不同語言,嘗試使用拉丁文顯示。"
|
"tooltip": "如果歌詞使用不同語言,嘗試使用拉丁文顯示。"
|
||||||
@ -853,6 +883,27 @@
|
|||||||
"description": "為 macOS 使用者新增觸控列支援",
|
"description": "為 macOS 使用者新增觸控列支援",
|
||||||
"name": "觸控列 (Touchbar) 支援"
|
"name": "觸控列 (Touchbar) 支援"
|
||||||
},
|
},
|
||||||
|
"transparent-player": {
|
||||||
|
"description": "讓應用程式視窗變為透明",
|
||||||
|
"menu": {
|
||||||
|
"opacity": {
|
||||||
|
"label": "不透明度",
|
||||||
|
"submenu": {
|
||||||
|
"percent": "{{opacity}}%"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"label": "類型",
|
||||||
|
"submenu": {
|
||||||
|
"acrylic": "壓克力",
|
||||||
|
"mica": "雲母",
|
||||||
|
"none": "無",
|
||||||
|
"tabbed": "分頁式"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "透明撥放器"
|
||||||
|
},
|
||||||
"tuna-obs": {
|
"tuna-obs": {
|
||||||
"description": "與 OBS 的 Tuna 外掛連線",
|
"description": "與 OBS 的 Tuna 外掛連線",
|
||||||
"name": "Tuna OBS"
|
"name": "Tuna OBS"
|
||||||
|
|||||||
1
src/plugins/adblocker/.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
/ad-blocker-engine.bin
|
|
||||||
@ -1,58 +0,0 @@
|
|||||||
function skipAd(target: Element) {
|
|
||||||
const skipButton = target.querySelector<HTMLButtonElement>(
|
|
||||||
'button.ytp-ad-skip-button-modern',
|
|
||||||
);
|
|
||||||
if (skipButton) {
|
|
||||||
skipButton.click();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function speedUpAndMute(player: Element, isAdShowing: boolean) {
|
|
||||||
const video = player.querySelector<HTMLVideoElement>('video');
|
|
||||||
if (!video) return;
|
|
||||||
if (isAdShowing) {
|
|
||||||
video.playbackRate = 16;
|
|
||||||
video.muted = true;
|
|
||||||
} else if (!isAdShowing) {
|
|
||||||
video.playbackRate = 1;
|
|
||||||
video.muted = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const loadAdSpeedup = () => {
|
|
||||||
const player = document.querySelector<HTMLVideoElement>('#movie_player');
|
|
||||||
if (!player) return;
|
|
||||||
|
|
||||||
new MutationObserver((mutations) => {
|
|
||||||
for (const mutation of mutations) {
|
|
||||||
if (
|
|
||||||
mutation.type === 'attributes' &&
|
|
||||||
mutation.attributeName === 'class'
|
|
||||||
) {
|
|
||||||
const target = mutation.target as HTMLElement;
|
|
||||||
|
|
||||||
const isAdShowing =
|
|
||||||
target.classList.contains('ad-showing') ||
|
|
||||||
target.classList.contains('ad-interrupting');
|
|
||||||
speedUpAndMute(target, isAdShowing);
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
mutation.type === 'childList' &&
|
|
||||||
mutation.addedNodes.length &&
|
|
||||||
mutation.target instanceof HTMLElement
|
|
||||||
) {
|
|
||||||
skipAd(mutation.target);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).observe(player, {
|
|
||||||
attributes: true,
|
|
||||||
childList: true,
|
|
||||||
subtree: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
const isAdShowing =
|
|
||||||
player.classList.contains('ad-showing') ||
|
|
||||||
player.classList.contains('ad-interrupting');
|
|
||||||
speedUpAndMute(player, isAdShowing);
|
|
||||||
skipAd(player);
|
|
||||||
};
|
|
||||||
@ -1,81 +0,0 @@
|
|||||||
// Used for caching
|
|
||||||
import path from 'node:path';
|
|
||||||
import fs, { promises } from 'node:fs';
|
|
||||||
|
|
||||||
import { ElectronBlocker } from '@ghostery/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/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters.txt',
|
|
||||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/quick-fixes.txt',
|
|
||||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/unbreak.txt',
|
|
||||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters-2020.txt',
|
|
||||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters-2021.txt',
|
|
||||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters-2022.txt',
|
|
||||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters-2023.txt',
|
|
||||||
// Fanboy Annoyances
|
|
||||||
'https://secure.fanboy.co.nz/fanboy-annoyance_ubo.txt',
|
|
||||||
// AdGuard
|
|
||||||
'https://filters.adtidy.org/extension/ublock/filters/122_optimized.txt',
|
|
||||||
];
|
|
||||||
|
|
||||||
let blocker: ElectronBlocker | undefined;
|
|
||||||
|
|
||||||
export const loadAdBlockerEngine = async (
|
|
||||||
session: Electron.Session | undefined = undefined,
|
|
||||||
cache: boolean = true,
|
|
||||||
additionalBlockLists: string[] = [],
|
|
||||||
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 {
|
|
||||||
blocker = await ElectronBlocker.fromLists(
|
|
||||||
(url: string) => net.fetch(url),
|
|
||||||
lists,
|
|
||||||
{
|
|
||||||
enableCompression: true,
|
|
||||||
// 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.error('Error loading adBlocker engine', error);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const unloadAdBlockerEngine = (session: Electron.Session) => {
|
|
||||||
if (blocker) {
|
|
||||||
blocker.disableBlockingInSession(session);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const isBlockerEnabled = (session: Electron.Session) =>
|
|
||||||
blocker !== undefined && blocker.isBlockingEnabled(session);
|
|
||||||
@ -1,148 +0,0 @@
|
|||||||
import { contextBridge, webFrame } from 'electron';
|
|
||||||
|
|
||||||
import { blockers } from './types';
|
|
||||||
import { createPlugin } from '@/utils';
|
|
||||||
import {
|
|
||||||
isBlockerEnabled,
|
|
||||||
loadAdBlockerEngine,
|
|
||||||
unloadAdBlockerEngine,
|
|
||||||
} from './blocker';
|
|
||||||
|
|
||||||
import { inject, isInjected } from './injectors/inject';
|
|
||||||
import { loadAdSpeedup } from './adSpeedup';
|
|
||||||
|
|
||||||
import { t } from '@/i18n';
|
|
||||||
|
|
||||||
import type { BrowserWindow } from 'electron';
|
|
||||||
|
|
||||||
interface AdblockerConfig {
|
|
||||||
/**
|
|
||||||
* Whether to enable the adblocker.
|
|
||||||
* @default true
|
|
||||||
*/
|
|
||||||
enabled: boolean;
|
|
||||||
/**
|
|
||||||
* When enabled, the adblocker will cache the blocklists.
|
|
||||||
* @default true
|
|
||||||
*/
|
|
||||||
cache: boolean;
|
|
||||||
/**
|
|
||||||
* Which adblocker to use.
|
|
||||||
* @default blockers.InPlayer
|
|
||||||
*/
|
|
||||||
blocker: (typeof blockers)[keyof typeof blockers];
|
|
||||||
/**
|
|
||||||
* Additional list of filters to use.
|
|
||||||
* @example ["https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt"]
|
|
||||||
* @default []
|
|
||||||
*/
|
|
||||||
additionalBlockLists: string[];
|
|
||||||
/**
|
|
||||||
* Disable the default blocklists.
|
|
||||||
* @default false
|
|
||||||
*/
|
|
||||||
disableDefaultLists: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default createPlugin({
|
|
||||||
name: () => t('plugins.adblocker.name'),
|
|
||||||
description: () => t('plugins.adblocker.description'),
|
|
||||||
restartNeeded: false,
|
|
||||||
config: {
|
|
||||||
enabled: true,
|
|
||||||
cache: true,
|
|
||||||
blocker: blockers.InPlayer,
|
|
||||||
additionalBlockLists: [],
|
|
||||||
disableDefaultLists: false,
|
|
||||||
} as AdblockerConfig,
|
|
||||||
menu: async ({ getConfig, setConfig }) => {
|
|
||||||
const config = await getConfig();
|
|
||||||
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
label: t('plugins.adblocker.menu.blocker'),
|
|
||||||
submenu: Object.values(blockers).map((blocker) => ({
|
|
||||||
label: blocker,
|
|
||||||
type: 'radio',
|
|
||||||
checked: (config.blocker || blockers.WithBlocklists) === blocker,
|
|
||||||
click() {
|
|
||||||
setConfig({ blocker });
|
|
||||||
},
|
|
||||||
})),
|
|
||||||
},
|
|
||||||
];
|
|
||||||
},
|
|
||||||
renderer: {
|
|
||||||
async onPlayerApiReady(_, { getConfig }) {
|
|
||||||
const config = await getConfig();
|
|
||||||
if (config.blocker === blockers.AdSpeedup) {
|
|
||||||
loadAdSpeedup();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
backend: {
|
|
||||||
mainWindow: null as BrowserWindow | null,
|
|
||||||
async start({ getConfig, window }) {
|
|
||||||
const config = await getConfig();
|
|
||||||
this.mainWindow = window;
|
|
||||||
|
|
||||||
if (config.blocker === blockers.WithBlocklists) {
|
|
||||||
await loadAdBlockerEngine(
|
|
||||||
window.webContents.session,
|
|
||||||
config.cache,
|
|
||||||
config.additionalBlockLists,
|
|
||||||
config.disableDefaultLists,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
stop({ window }) {
|
|
||||||
if (isBlockerEnabled(window.webContents.session)) {
|
|
||||||
unloadAdBlockerEngine(window.webContents.session);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async onConfigChange(newConfig) {
|
|
||||||
if (this.mainWindow) {
|
|
||||||
if (
|
|
||||||
newConfig.blocker === blockers.WithBlocklists &&
|
|
||||||
!isBlockerEnabled(this.mainWindow.webContents.session)
|
|
||||||
) {
|
|
||||||
await loadAdBlockerEngine(
|
|
||||||
this.mainWindow.webContents.session,
|
|
||||||
newConfig.cache,
|
|
||||||
newConfig.additionalBlockLists,
|
|
||||||
newConfig.disableDefaultLists,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
preload: {
|
|
||||||
// see #1478
|
|
||||||
script: `const _prunerFn = window._pruner;
|
|
||||||
window._pruner = undefined;
|
|
||||||
JSON.parse = new Proxy(JSON.parse, {
|
|
||||||
apply() {
|
|
||||||
return _prunerFn(Reflect.apply(...arguments));
|
|
||||||
},
|
|
||||||
});
|
|
||||||
Response.prototype.json = new Proxy(Response.prototype.json, {
|
|
||||||
apply() {
|
|
||||||
return Reflect.apply(...arguments).then((o) => _prunerFn(o));
|
|
||||||
},
|
|
||||||
}); 0`,
|
|
||||||
async start({ getConfig }) {
|
|
||||||
const config = await getConfig();
|
|
||||||
|
|
||||||
if (config.blocker === blockers.InPlayer && !isInjected()) {
|
|
||||||
inject(contextBridge);
|
|
||||||
await webFrame.executeJavaScript(this.script);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async onConfigChange(newConfig) {
|
|
||||||
if (newConfig.blocker === blockers.InPlayer && !isInjected()) {
|
|
||||||
inject(contextBridge);
|
|
||||||
await webFrame.executeJavaScript(this.script);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
export default async () => {
|
|
||||||
await import('@ghostery/adblocker-electron-preload');
|
|
||||||
};
|
|
||||||
5
src/plugins/adblocker/injectors/inject.d.ts
vendored
@ -1,5 +0,0 @@
|
|||||||
import type { ContextBridge } from 'electron';
|
|
||||||
|
|
||||||
export const inject: (contextBridge: ContextBridge) => void;
|
|
||||||
|
|
||||||
export const isInjected: () => boolean;
|
|
||||||
@ -1,259 +0,0 @@
|
|||||||
/* 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
|
|
||||||
*/
|
|
||||||
|
|
||||||
let injected = false;
|
|
||||||
|
|
||||||
export const isInjected = () => injected;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {Electron.ContextBridge} contextBridge
|
|
||||||
* @returns {*}
|
|
||||||
*/
|
|
||||||
export const inject = (contextBridge) => {
|
|
||||||
injected = true;
|
|
||||||
{
|
|
||||||
const pruner = function (o) {
|
|
||||||
delete o.playerAds;
|
|
||||||
delete o.adPlacements;
|
|
||||||
delete o.adSlots;
|
|
||||||
//
|
|
||||||
if (o.playerResponse) {
|
|
||||||
delete o.playerResponse.playerAds;
|
|
||||||
delete o.playerResponse.adPlacements;
|
|
||||||
delete o.playerResponse.adSlots;
|
|
||||||
}
|
|
||||||
if (o.ytInitialPlayerResponse) {
|
|
||||||
delete o.ytInitialPlayerResponse.playerAds;
|
|
||||||
delete o.ytInitialPlayerResponse.adPlacements;
|
|
||||||
delete o.ytInitialPlayerResponse.adSlots;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return o;
|
|
||||||
}
|
|
||||||
|
|
||||||
contextBridge.exposeInMainWorld('_pruner', pruner);
|
|
||||||
}
|
|
||||||
|
|
||||||
const chains = [
|
|
||||||
{
|
|
||||||
chain: 'playerResponse.adPlacements',
|
|
||||||
cValue: 'undefined',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
chain: 'ytInitialPlayerResponse.playerAds',
|
|
||||||
cValue: 'undefined',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
chain: 'ytInitialPlayerResponse.adPlacements',
|
|
||||||
cValue: 'undefined',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
chain: 'ytInitialPlayerResponse.adSlots',
|
|
||||||
cValue: 'undefined',
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
chains.forEach(function ({ chain, cValue }) {
|
|
||||||
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);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
export const blockers = {
|
|
||||||
WithBlocklists: 'With blocklists',
|
|
||||||
InPlayer: 'In player',
|
|
||||||
AdSpeedup: 'Ad speedup',
|
|
||||||
} as const;
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
import { inject } from 'simple-youtube-age-restriction-bypass';
|
|
||||||
|
|
||||||
import { createPlugin } from '@/utils';
|
|
||||||
import { t } from '@/i18n';
|
|
||||||
|
|
||||||
export default createPlugin({
|
|
||||||
name: () => t('plugins.bypass-age-restrictions.name'),
|
|
||||||
description: () => t('plugins.bypass-age-restrictions.description'),
|
|
||||||
restartNeeded: true,
|
|
||||||
|
|
||||||
// See https://github.com/organization/Simple-YouTube-Age-Restriction-Bypass#userscript
|
|
||||||
renderer: () => inject(),
|
|
||||||
});
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
declare module 'simple-youtube-age-restriction-bypass' {
|
|
||||||
export const inject: () => void;
|
|
||||||
}
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
import style from './style.css?inline';
|
|
||||||
import { createPlugin } from '@/utils';
|
|
||||||
import { t } from '@/i18n';
|
|
||||||
|
|
||||||
export default createPlugin({
|
|
||||||
name: () => t('plugins.no-google-login.name'),
|
|
||||||
description: () => t('plugins.no-google-login.description'),
|
|
||||||
restartNeeded: true,
|
|
||||||
config: {
|
|
||||||
enabled: false,
|
|
||||||
},
|
|
||||||
stylesheets: [style],
|
|
||||||
renderer() {
|
|
||||||
const elementsToRemove = [
|
|
||||||
'.sign-in-link.ytmusic-nav-bar',
|
|
||||||
'.ytmusic-pivot-bar-renderer[tab-id="FEmusic_liked"]',
|
|
||||||
];
|
|
||||||
|
|
||||||
for (const selector of elementsToRemove) {
|
|
||||||
const node = document.querySelector(selector);
|
|
||||||
if (node) {
|
|
||||||
node.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
.ytmusic-pivot-bar-renderer[tab-id='FEmusic_liked'],
|
|
||||||
ytmusic-guide-signin-promo-renderer,
|
|
||||||
a[href='/music_premium'],
|
|
||||||
.sign-in-link {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
@ -314,38 +314,37 @@ export default createPlugin({
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (config.mode !== 'native' && config.mode != 'disabled') {
|
if (config.mode !== 'native' && config.mode != 'disabled') {
|
||||||
document
|
setTimeout(() => {
|
||||||
.querySelector<HTMLVideoElement>('#player')
|
const playerSelector =
|
||||||
?.prepend(switchButtonContainer);
|
document.querySelector<HTMLVideoElement>('#player');
|
||||||
|
if (!playerSelector) return;
|
||||||
|
|
||||||
setVideoState(!config.hideVideo);
|
playerSelector.prepend(switchButtonContainer);
|
||||||
forcePlaybackMode();
|
setVideoState(!config.hideVideo);
|
||||||
// Fix black video
|
forcePlaybackMode();
|
||||||
if (video) {
|
if (video) {
|
||||||
video.style.height = 'auto';
|
video.style.height = 'auto';
|
||||||
}
|
|
||||||
|
|
||||||
video?.addEventListener('ytmd:src-changed', videoStarted);
|
|
||||||
|
|
||||||
observeThumbnail();
|
|
||||||
videoStarted();
|
|
||||||
|
|
||||||
switch (config.align) {
|
|
||||||
case 'right': {
|
|
||||||
switchButtonContainer.style.justifyContent = 'flex-end';
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
video?.addEventListener('ytmd:src-changed', videoStarted);
|
||||||
|
observeThumbnail();
|
||||||
|
videoStarted();
|
||||||
|
switch (config.align) {
|
||||||
|
case 'right': {
|
||||||
|
switchButtonContainer.style.justifyContent = 'flex-end';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
case 'middle': {
|
case 'middle': {
|
||||||
switchButtonContainer.style.justifyContent = 'center';
|
switchButtonContainer.style.justifyContent = 'center';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
case 'left': {
|
case 'left': {
|
||||||
switchButtonContainer.style.justifyContent = 'flex-start';
|
switchButtonContainer.style.justifyContent = 'flex-start';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}, 0);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onConfigChange(newConfig) {
|
onConfigChange(newConfig) {
|
||||||
|
|||||||