Compare commits
32 Commits
5.9.0
...
6e5024742a
Author | SHA1 | Date | |
---|---|---|---|
6e5024742a | |||
417afaab85 | |||
d225c0056b | |||
|
a75b0336db | ||
|
29465ce13a | ||
|
d333047269 | ||
a6c1d35a60 | |||
|
c09a4bc4a8 | ||
2e31b5d913 | |||
2fd29c1b83 | |||
b2f27a2afe | |||
8e11fd7f09 | |||
17b2818b70 | |||
4ef76c262e | |||
fd0dae2762 | |||
aa59bdc6dd | |||
5b5b6ecb38 | |||
5983145857 | |||
0c7d579951 | |||
|
235d916749 | ||
|
2d9f268866 | ||
ae65e57e32 | |||
|
3f2d69f2f4 | ||
5ff2cc68d3 | |||
daabe5bdbb | |||
|
456727c0e0 | ||
|
ba50e0c095 | ||
|
312e90e8cb | ||
76769dfab3 | |||
|
565d32ae3d | ||
7be6f79040 | |||
|
f894c82b12 |
14
CHANGELOG.md
@@ -4,6 +4,20 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [5.10.0]
|
||||||
|
|
||||||
|
- TIDAL will now close the previous notification if a new one is sent whilst the old is still visible. [#364](https://github.com/Mastermindzh/tidal-hifi/pull/364)
|
||||||
|
- Updated developer documentation to get started in README [#365](https://github.com/Mastermindzh/tidal-hifi/pull/365)
|
||||||
|
- Links in the about window now open in the user's default browser. fixes [#360](https://github.com/Mastermindzh/tidal-hifi/issues/360)
|
||||||
|
- Refactored "nowPlaying" code to always display the current state, even when the built-in UI is updated.
|
||||||
|
- fixes [#351](https://github.com/Mastermindzh/tidal-hifi/issues/351)
|
||||||
|
- fixes [#356](https://github.com/Mastermindzh/tidal-hifi/issues/356)
|
||||||
|
- fixes [#370](https://github.com/Mastermindzh/tidal-hifi/issues/370)
|
||||||
|
- Reverted to using old icon syntax with icons in the build directory. fixes [#350](https://github.com/Mastermindzh/tidal-hifi/issues/350)
|
||||||
|
- Enabled wayland platform flags by default when launching through .desktop file
|
||||||
|
- fixes [#273](https://github.com/Mastermindzh/tidal-hifi/issues/273)
|
||||||
|
- fixes [#347](https://github.com/Mastermindzh/tidal-hifi/issues/347)
|
||||||
|
|
||||||
## [5.9.0]
|
## [5.9.0]
|
||||||
|
|
||||||
- More Discord options:
|
- More Discord options:
|
||||||
|
11
README.md
@@ -130,10 +130,13 @@ nix-env -iA nixpkgs.tidal-hifi
|
|||||||
|
|
||||||
To install and work with the code on this project follow these steps:
|
To install and work with the code on this project follow these steps:
|
||||||
|
|
||||||
- git clone [https://github.com/Mastermindzh/tidal-hifi.git](https://github.com/Mastermindzh/tidal-hifi.git)
|
- `git clone [https://github.com/Mastermindzh/tidal-hifi.git](https://github.com/Mastermindzh/tidal-hifi.git)`
|
||||||
- cd TIDAL Hi-Fi
|
- `cd tidal-hifi`
|
||||||
- npm install
|
- `npm install`
|
||||||
- npm start
|
- `npm run watch` to watch for auto-reload of Typescript/SCSS changes.
|
||||||
|
- `npm run compile` can be used to trigger it once
|
||||||
|
- `npm watchStart` to auto watch for any updates files and reload Tidal Hi-Fi
|
||||||
|
- `npm start` can be used to run Tidal Hi-Fi manually once
|
||||||
|
|
||||||
## Integrations
|
## Integrations
|
||||||
|
|
||||||
|
@@ -11,10 +11,16 @@ extraResources:
|
|||||||
- "themes/**"
|
- "themes/**"
|
||||||
linux:
|
linux:
|
||||||
category: AudioVideo
|
category: AudioVideo
|
||||||
icon: build/icons/256x256.png
|
icon: build/icons
|
||||||
target:
|
target:
|
||||||
- dir
|
- dir
|
||||||
executableName: tidal-hifi
|
executableName: tidal-hifi
|
||||||
|
executableArgs:
|
||||||
|
[
|
||||||
|
"--enable-features=UseOzonePlatform",
|
||||||
|
"--ozone-platform-hint=auto",
|
||||||
|
"--enable-features=WaylandWindowDecorations",
|
||||||
|
]
|
||||||
desktop:
|
desktop:
|
||||||
Encoding: UTF-8
|
Encoding: UTF-8
|
||||||
Name: TIDAL Hi-Fi
|
Name: TIDAL Hi-Fi
|
||||||
|
BIN
build/icons/128x128.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
build/icons/16x16.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
build/icons/22x22.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
build/icons/24x24.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
build/icons/256x256 copy.png
Normal file
After Width: | Height: | Size: 9.0 KiB |
BIN
build/icons/32x32.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
build/icons/384x384.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
build/icons/48x48.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
build/icons/64x64.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
676
package-lock.json
generated
14
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "tidal-hifi",
|
"name": "tidal-hifi",
|
||||||
"version": "5.9.0",
|
"version": "5.10.0",
|
||||||
"description": "Tidal on Electron with widevine(hifi) support",
|
"description": "Tidal on Electron with widevine(hifi) support",
|
||||||
"main": "ts-dist/main.js",
|
"main": "ts-dist/main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -39,15 +39,15 @@
|
|||||||
"homepage": "https://github.com/Mastermindzh/tidal-hifi",
|
"homepage": "https://github.com/Mastermindzh/tidal-hifi",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@electron/remote": "^2.1.1",
|
"@electron/remote": "^2.1.2",
|
||||||
"axios": "^1.6.5",
|
"axios": "^1.6.8",
|
||||||
"discord-rpc": "^4.0.1",
|
"discord-rpc": "^4.0.1",
|
||||||
"electron-store": "^8.1.0",
|
"electron-store": "^8.2.0",
|
||||||
"express": "^4.18.2",
|
"express": "^4.19.2",
|
||||||
"hotkeys-js": "^3.13.5",
|
"hotkeys-js": "^3.13.7",
|
||||||
"mpris-service": "^2.1.2",
|
"mpris-service": "^2.1.2",
|
||||||
"request": "^2.88.2",
|
"request": "^2.88.2",
|
||||||
"sass": "^1.70.0"
|
"sass": "^1.72.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@mastermindzh/prettier-config": "^1.0.0",
|
"@mastermindzh/prettier-config": "^1.0.0",
|
||||||
|
@@ -432,14 +432,16 @@
|
|||||||
<img alt="tidal icon" class="about-section__icon" src="./icon.png" />
|
<img alt="tidal icon" class="about-section__icon" src="./icon.png" />
|
||||||
<h4>TIDAL Hi-Fi</h4>
|
<h4>TIDAL Hi-Fi</h4>
|
||||||
<div class="about-section__version">
|
<div class="about-section__version">
|
||||||
<a href="https://github.com/Mastermindzh/tidal-hifi/releases/tag/5.9.0">5.9.0</a>
|
<a target="_blank" rel="noopener"
|
||||||
|
href="https://github.com/Mastermindzh/tidal-hifi/releases/tag/5.10.0">5.10.0</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="about-section__links">
|
<div class="about-section__links">
|
||||||
<a href="https://github.com/mastermindzh/tidal-hifi/" class="about-section__button">Github <i
|
<a target="_blank" rel="noopener" href="https://github.com/mastermindzh/tidal-hifi/"
|
||||||
class="fa fa-external-link"></i></a>
|
class="about-section__button">Github
|
||||||
<a href="https://github.com/Mastermindzh/tidal-hifi/issues" class="about-section__button">Report an issue <i
|
<i class="fa fa-external-link"></i></a>
|
||||||
class="fa fa-external-link"></i></a>
|
<a target="_blank" rel="noopener" href="https://github.com/Mastermindzh/tidal-hifi/issues"
|
||||||
<a href="https://github.com/Mastermindzh/tidal-hifi/graphs/contributors"
|
class="about-section__button">Report an issue <i class="fa fa-external-link"></i></a>
|
||||||
|
<a target="_blank" rel="noopener" href="https://github.com/Mastermindzh/tidal-hifi/graphs/contributors"
|
||||||
class="about-section__button">Contributors <i class="fa fa-external-link"></i></a>
|
class="about-section__button">Contributors <i class="fa fa-external-link"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
@@ -415,7 +415,6 @@ html {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// file upload
|
// file upload
|
||||||
|
|
||||||
.file-drop-area {
|
.file-drop-area {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@@ -26,8 +26,10 @@ let player: Player;
|
|||||||
let currentPlayStatus = MediaStatus.paused;
|
let currentPlayStatus = MediaStatus.paused;
|
||||||
let currentListenBrainzDelayId: ReturnType<typeof setTimeout>;
|
let currentListenBrainzDelayId: ReturnType<typeof setTimeout>;
|
||||||
let scrobbleWaitingForDelay = false;
|
let scrobbleWaitingForDelay = false;
|
||||||
let wasJustPausedOrResumed = false;
|
|
||||||
|
let currentlyPlaying = MediaStatus.paused;
|
||||||
let currentMediaInfo: Options;
|
let currentMediaInfo: Options;
|
||||||
|
let currentNotification: Electron.Notification;
|
||||||
|
|
||||||
const elements = {
|
const elements = {
|
||||||
play: '*[data-test="play"]',
|
play: '*[data-test="play"]',
|
||||||
@@ -184,7 +186,6 @@ function getUpdateFrequency() {
|
|||||||
* Play or pause the current song
|
* Play or pause the current song
|
||||||
*/
|
*/
|
||||||
function playPause() {
|
function playPause() {
|
||||||
wasJustPausedOrResumed = true;
|
|
||||||
const play = elements.get("play");
|
const play = elements.get("play");
|
||||||
|
|
||||||
if (play) {
|
if (play) {
|
||||||
@@ -359,7 +360,13 @@ function updateMediaInfo(options: Options, notify: boolean) {
|
|||||||
currentMediaInfo = options;
|
currentMediaInfo = options;
|
||||||
ipcRenderer.send(globalEvents.updateInfo, options);
|
ipcRenderer.send(globalEvents.updateInfo, options);
|
||||||
if (settingsStore.get(settings.notifications) && notify) {
|
if (settingsStore.get(settings.notifications) && notify) {
|
||||||
new Notification({ title: options.title, body: options.artists, icon: options.icon }).show();
|
if (currentNotification) currentNotification.close();
|
||||||
|
currentNotification = new Notification({
|
||||||
|
title: options.title,
|
||||||
|
body: options.artists,
|
||||||
|
icon: options.icon,
|
||||||
|
});
|
||||||
|
currentNotification.show();
|
||||||
}
|
}
|
||||||
updateMpris(options);
|
updateMpris(options);
|
||||||
updateListenBrainz(options);
|
updateListenBrainz(options);
|
||||||
@@ -515,10 +522,12 @@ setInterval(function () {
|
|||||||
const current = elements.getText("current");
|
const current = elements.getText("current");
|
||||||
const currentStatus = getCurrentlyPlayingStatus();
|
const currentStatus = getCurrentlyPlayingStatus();
|
||||||
|
|
||||||
|
const playStateChanged = currentStatus != currentlyPlaying;
|
||||||
|
|
||||||
// update info if song changed or was just paused/resumed
|
// update info if song changed or was just paused/resumed
|
||||||
if (titleOrArtistsChanged || wasJustPausedOrResumed) {
|
if (titleOrArtistsChanged || playStateChanged) {
|
||||||
if (wasJustPausedOrResumed) {
|
if (playStateChanged) {
|
||||||
wasJustPausedOrResumed = false;
|
currentlyPlaying = currentStatus;
|
||||||
}
|
}
|
||||||
skipArtistsIfFoundInSkippedArtistsList(artistsArray);
|
skipArtistsIfFoundInSkippedArtistsList(artistsArray);
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import Store from "electron-store";
|
import Store from "electron-store";
|
||||||
|
|
||||||
import { BrowserWindow } from "electron";
|
import { BrowserWindow, shell } from "electron";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import { settings } from "../constants/settings";
|
import { settings } from "../constants/settings";
|
||||||
|
|
||||||
@@ -134,6 +134,10 @@ export const createSettingsWindow = function () {
|
|||||||
|
|
||||||
settingsWindow.loadURL(`file://${__dirname}/../pages/settings/settings.html`);
|
settingsWindow.loadURL(`file://${__dirname}/../pages/settings/settings.html`);
|
||||||
|
|
||||||
|
settingsWindow.webContents.setWindowOpenHandler(({ url }) => {
|
||||||
|
shell.openExternal(url);
|
||||||
|
return { action: "deny" };
|
||||||
|
});
|
||||||
settingsModule.settingsWindow = settingsWindow;
|
settingsModule.settingsWindow = settingsWindow;
|
||||||
};
|
};
|
||||||
|
|
||||||
|