Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .erb/configs/webpack.config.renderer.dev.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const port = process.env.PORT || 5500;
const manifest = path.resolve(webpackPaths.dllPath, 'renderer.json');
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const requiredByDLLConfig = module.parent!.filename.includes(
'webpack.config.renderer.dev.dll'
'webpack.config.renderer.dev.dll',
);

/**
Expand All @@ -33,8 +33,8 @@ if (
) {
console.log(
chalk.black.bgYellow.bold(
'The DLL files are missing. Sit back while we build them for you with "npm run build-dll"'
)
'The DLL files are missing. Sit back while we build them for you with "npm run build-dll"',
),
);
execSync('npm run postinstall');
}
Expand Down
8 changes: 4 additions & 4 deletions .erb/scripts/check-build-exists.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ const rendererPath = path.join(webpackPaths.distRendererPath, 'renderer.js');
if (!fs.existsSync(mainPath)) {
throw new Error(
chalk.whiteBright.bgRed.bold(
'The main process is not built yet. Build it by running "npm run build:main"'
)
'The main process is not built yet. Build it by running "npm run build:main"',
),
);
}

if (!fs.existsSync(rendererPath)) {
throw new Error(
chalk.whiteBright.bgRed.bold(
'The renderer process is not built yet. Build it by running "npm run build:renderer"'
)
'The renderer process is not built yet. Build it by running "npm run build:renderer"',
),
);
}
12 changes: 6 additions & 6 deletions .erb/scripts/check-native-dep.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,34 +16,34 @@ if (dependencies) {
// because of a devDependency then that is okay. Warn when it is installed
// because of a dependency
const { dependencies: dependenciesObject } = JSON.parse(
execSync(`npm ls ${nativeDeps.join(' ')} --json`).toString()
execSync(`npm ls ${nativeDeps.join(' ')} --json`).toString(),
);
const rootDependencies = Object.keys(dependenciesObject);
const filteredRootDependencies = rootDependencies.filter((rootDependency) =>
dependenciesKeys.includes(rootDependency)
dependenciesKeys.includes(rootDependency),
);
if (filteredRootDependencies.length > 0) {
const plural = filteredRootDependencies.length > 1;
console.log(`
${chalk.whiteBright.bgYellow.bold(
'Webpack does not work with native dependencies.'
'Webpack does not work with native dependencies.',
)}
${chalk.bold(filteredRootDependencies.join(', '))} ${
plural ? 'are native dependencies' : 'is a native dependency'
} and should be installed inside of the "./release/app" folder.
First, uninstall the packages from "./package.json":
${chalk.whiteBright.bgGreen.bold('npm uninstall your-package')}
${chalk.bold(
'Then, instead of installing the package to the root "./package.json":'
'Then, instead of installing the package to the root "./package.json":',
)}
${chalk.whiteBright.bgRed.bold('npm install your-package')}
${chalk.bold('Install the package to "./release/app/package.json"')}
${chalk.whiteBright.bgGreen.bold(
'cd ./release/app && npm install your-package'
'cd ./release/app && npm install your-package',
)}
Read more about native dependencies at:
${chalk.bold(
'https://electron-react-boilerplate.js.org/docs/adding-dependencies/#module-structure'
'https://electron-react-boilerplate.js.org/docs/adding-dependencies/#module-structure',
)}
`);
process.exit(1);
Expand Down
4 changes: 2 additions & 2 deletions .erb/scripts/check-node-env.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ export default function checkNodeEnv(expectedEnv) {
if (process.env.NODE_ENV !== expectedEnv) {
console.log(
chalk.whiteBright.bgRed.bold(
`"process.env.NODE_ENV" must be "${expectedEnv}" to use this webpack config`
)
`"process.env.NODE_ENV" must be "${expectedEnv}" to use this webpack config`,
),
);
process.exit(2);
}
Expand Down
4 changes: 2 additions & 2 deletions .erb/scripts/check-port-in-use.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ detectPort(port, (err, availablePort) => {
if (port !== String(availablePort)) {
throw new Error(
chalk.whiteBright.bgRed.bold(
`Port "${port}" on "localhost" is already in use. Please use another port. ex: PORT=4343 npm start`
)
`Port "${port}" on "localhost" is already in use. Please use another port. ex: PORT=4343 npm start`,
),
);
} else {
process.exit(0);
Expand Down
2 changes: 1 addition & 1 deletion .erb/scripts/notarize.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ exports.default = async function notarizeMacos(context) {

if (!('APPLE_ID' in process.env && 'APPLE_ID_PASS' in process.env)) {
console.warn(
'Skipping notarizing step. APPLE_ID and APPLE_ID_PASS env variables must be set'
'Skipping notarizing step. APPLE_ID and APPLE_ID_PASS env variables must be set',
);
return;
}
Expand Down
1 change: 1 addition & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ module.exports = {
'react/jsx-filename-extension': 'off',
'no-restricted-syntax': 'off',
'import/named': 'off',
'no-use-before-define': ['error', { functions: false }],
},
overrides: [
{
Expand Down
4 changes: 0 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,6 @@ jobs:
node-version: 18
check-latest: true

- name: Print GitHub Ref
run: |
echo "GitHub Ref: ${{ github.ref }}"

- name: Build/release Electron app
uses: samuelmeuli/action-electron-builder@v1
with:
Expand Down
4 changes: 4 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npm run husky-test
8 changes: 7 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,15 @@
"Resyncing",
"RIELL",
"samuelmeuli",
"scrobble",
"Spicetify",
"sspai",
"SYLT",
"unlove",
"unmaximize",
"unmaximized",
"unsynced",
"USLT",
"webm",
"xmark",
"Yosef",
Expand Down Expand Up @@ -58,7 +63,8 @@
"class",
"className",
"ngClass",
"iconClassName"
"iconClassName",
"titleClassName"
],
"editor.tokenColorCustomizations": {
"comments": "",
Expand Down
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<div align="center">
<img alt="GitHub all releases" src="https://img.shields.io/github/downloads/Sandakan/Nora/total?label=all%20time%20downloads&style=for-the-badge">
<img alt="GitHub release (latest by date)" src="https://img.shields.io/github/downloads/Sandakan/Nora/v2.3.0-stable/total?style=for-the-badge">
<img alt="GitHub release (latest by date)" src="https://img.shields.io/github/downloads/Sandakan/Nora/v2.4.0-stable/total?style=for-the-badge">
<img alt="GitHub package.json version" src="https://img.shields.io/github/package-json/v/Sandakan/Nora?color=blue&label=latest%20version&style=for-the-badge">
<a href="https://github.com/Sandakan/Nora/blob/master/LICENSE"><img alt="GitHub license" src="https://img.shields.io/github/license/Sandakan/Nora?style=for-the-badge"></a>
<a href="https://github.com/Sandakan/Nora/issues"><img alt="GitHub issues" src="https://img.shields.io/github/issues/Sandakan/Oto-Music-for-Desktop?style=for-the-badge"></a>
Expand Down Expand Up @@ -58,7 +58,7 @@ It packs a horizon of features including,

<br>

![Latest Version Artwork](/assets/other/release%20artworks/whats-new-v2.3.0-stable.webp)
![Latest Version Artwork](/assets/other/release%20artworks/whats-new-v2.4.0-stable.webp)

Visit the [release notes](/changelog.md) to see what's new on the latest release.</p>

Expand All @@ -68,6 +68,8 @@ Visit the [release notes](/changelog.md) to see what's new on the latest release

![Switch between Dark and Light Modes Artwork](/assets/other/artwork%202.webp)

![Support for Last.FM Scrobbling](/assets/other/artwork%209.webp)

![Organize your music library with ease Artwork](/assets/other/artwork%203.webp)

![See how your favorite artists appear on songs and albums Artwork](/assets/other/artwork%204.webp)
Expand Down
6 changes: 3 additions & 3 deletions __tests__/isLatestVersion.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ describe('App versions check', () => {

test('Versions with same release phases and different build metadata', () => {
expect(
isLatestVersion('2.0.0-stable.20230515', '2.0.0-stable.20230510')
isLatestVersion('2.0.0-stable.20230515', '2.0.0-stable.20230510'),
).toBe(true);
expect(isLatestVersion('2.0.0-beta20230510', '2.0.0-beta20230515')).toBe(
true
true,
);
expect(
isLatestVersion('2.0.0-alpha.20250101', '2.0.0-alpha.19990509')
isLatestVersion('2.0.0-alpha.20250101', '2.0.0-alpha.19990509'),
).toBe(true);
});

Expand Down
Binary file modified assets/fonts/MaterialSymbolsRounded.woff2
Binary file not shown.
Binary file added assets/images/webp/last-fm-logo.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/installer_assets/sidebar.bmp
Binary file not shown.
Binary file added assets/other/artwork 9.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 10 additions & 5 deletions assets/styles/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -158,15 +158,20 @@ body,

body,
body * {
transition: color var(--transition-duration-0_2s) linear,
transition:
color var(--transition-duration-0_2s) linear,
background-color var(--transition-duration-0_2s) linear;
-webkit-transition: color var(--transition-duration-0_2s) linear,
-webkit-transition:
color var(--transition-duration-0_2s) linear,
background-color var(--transition-duration-0_2s) linear;
-moz-transition: color var(--transition-duration-0_2s) linear,
-moz-transition:
color var(--transition-duration-0_2s) linear,
background-color var(--transition-duration-0_2s) linear;
-ms-transition: color var(--transition-duration-0_2s) linear,
-ms-transition:
color var(--transition-duration-0_2s) linear,
background-color var(--transition-duration-0_2s) linear;
-o-transition: color var(--transition-duration-0_2s) linear,
-o-transition:
color var(--transition-duration-0_2s) linear,
background-color var(--transition-duration-0_2s) linear;
}

Expand Down
90 changes: 88 additions & 2 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,64 @@
# Change Log

> ### The latest version, **( v2.3.0-stable )** contains a lot of new features and improvements. As always expect some bugs in the app.
> ### The latest version, **( v2.4.0-stable )** contains a lot of new features and improvements. As always expect some bugs in the app.

<br>

![Nora v2.3.0-stable version artwork](assets/other/release%20artworks/whats-new-v2.3.0-stable.webp)
![Nora v2.4.0-stable version artwork](assets/other/release%20artworks/whats-new-v2.4.0-stable.webp)

<br>

- ### **v2.4.0-stable - ( 09<sup>th</sup> of September 2023 )**

- ### πŸŽ‰ New Features and Updates

- Added support for authenticating Last.FM users from Nora.
- Added support for Last.Fm scrobbling. Fixes #187.
- Added support for sending favorites data to Last.Fm.
- Added support for sending now-playing song info to Last.FM.
- Added a feature that shows similar artists and relevant hashtags for an artist when in the ArtistInfopage.
- Added a feature that shows similar tracks of a song when in the SongInfoPage.
- Added a feature that shows unavailable tracks and a summary of the album when in the AlbumInfoPage.
- Added support for saving the window state so that Nora starts from the previous window state (e.g.: full-screen).
- Added support for viewing both synchronized and Un-synchronized lyrics in the SongTagsEditingPage.
- Added a pane to display additional info about the song in the SongInfoPage.
- Added a new `Account Settings` section to the SettingsPage.
- Added icons to buttons in the LyricsEditingPage.
- Added a button to go to LyricsEditingPage from the LyricsPage.
- Added an alert in the SongTagsEditingPage if there are pending lyrics to be written to a song.
- Added an option to display song track number instead of the index number when in Albums Info Page. Fixes #194.

- ### πŸ”¨ Fixes and Improvements

- Fixed a bug where suggestion prompts don't hide when clicked on the button with an up arrow.
- Updated the feature to edit the next line's start tag with the current line's end tag and vice versa automatically.
- Fixed a bug where saved lyrics will be overwritten if the user selected the 'Synchronized Lyrics Only' or 'Un-synchronized and Synchronized Lyrics Only' options to save lyrics automatically and clicked the 'Show Online Lyrics' button.
- Fixed a bug where ignoring DuplicateArtistsSuggestions and SeparateArtistsSuggestions are not working.
- Fixed a bug where the 'No lyrics found' message will be shown in the LyricsPage when you try to view online lyrics that are not available for a song but have offline lyrics.
- Improved performance when displaying songs in CurrentQueuePage.
- Improved app logs to display the destination of the log.
- Improved app performance and reduced time taken when opening songs from File Explorer.
- Improved performance when opening Albums, Playlists, and Genres with bigger song lists.
- Updated outdated dependencies and fixed dependency vulnerabilities.
- Updated some icons in the app.
- Fixed a bug where saving automatically downloaded lyrics may confuse the audio player to skip the song. Fixes #192.
- Fixed a bug where ignoring DuplicateArtistsSuggestions and SeparateArtistsSuggestions are not working.
- Fixed a bug where automatically downloaded lyrics may try to save to songs that do not support modifying song metadata.
- Fixed a bug where songs show the original artwork instead of the optimized artwork and sometimes may fail to load the optimized artwork.
- Fixed a bug where duplicate album entries are added to artists when songs with the same album and artist are parsed. Fixes #191.
- Fixed a bug where the sorting state of songs in MusicFoldersPage is not being saved.
- Fixed a bug where search results from SongTagsEditingPage for artists, albums, and genres are fixed to a maximum limit of 5.
- Fixed a bug where clicking 'Play All' shuffles the queue.
- Fixed a bug where Ctrl + Click an item doesn't select it.
- Fixed a bug where user cannot use Shift + Click and Control + Click selection combinations simultaneously.
- Fixed a bug where suggestions don't get minimized when the up-arrow button is clicked.

- ### 🐜 Known Issues and Bugs
- Nora may fail to load some FLAC songs #184.

<br>

![Nora v2.3.0-stable version artwork](assets/other/release%20artworks/whats-new-v2.4.0-stable.webp)

<br>

Expand Down Expand Up @@ -64,6 +118,10 @@

<br>

![Nora v2.2.0-stable version artwork](assets/other/release%20artworks/whats-new-v2.2.0-stable.webp)

<br>

- ### **v2.2.0-stable - ( 20<sup>th</sup> of May 2023 )**

- ### πŸŽ‰ New Features and Features
Expand Down Expand Up @@ -91,6 +149,10 @@

<br>

![Nora v2.1.0-stable version artwork](assets/other/release%20artworks/whats-new-v2.1.0-stable.webp)

<br>

- ### **v2.1.0-stable - ( 13<sup>th</sup> of May 2023 )**

- ### πŸŽ‰ New Features and Features
Expand Down Expand Up @@ -143,6 +205,10 @@

<br>

![Nora v2.0.0-stable version artwork](assets/other/release%20artworks/whats-new-v2.0.0-stable.webp)

<br>

- ### **v2.0.0-stable - ( 23<sup>th</sup> of April 2023 )**

- ### πŸŽ‰ New Features and Features
Expand Down Expand Up @@ -247,6 +313,10 @@

<br>

![Nora v1.2.0-stable version artwork](assets/other/release%20artworks/whats-new-v1.2.0-stable.webp)

<br>

- ### **v1.2.0-stable - ( 9<sup>th</sup> of March 2023 )**

- ### πŸŽ‰ New Features and Features
Expand Down Expand Up @@ -284,6 +354,10 @@

<br>

![Nora v1.1.0-stable version artwork](assets/other/release%20artworks/whats-new-v1.1.0-stable.webp)

<br>

- ### **v1.1.0-stable - ( 26<sup>th</sup> of February 2023 )**

- ### πŸŽ‰ New Features and Features
Expand Down Expand Up @@ -322,6 +396,10 @@

<br>

![Nora v1.0.0-stable version artwork](assets/other/release%20artworks/whats-new-v1.0.0-stable.webp)

<br>

- ### **v1.0.0-stable - ( 17<sup>th</sup> of February 2023 )**

- ### πŸŽ‰ New Features and Updates
Expand Down Expand Up @@ -440,6 +518,10 @@

<br>

![Nora v0.8.0-alpha version artwork](assets/other/release%20artworks/whats-new-v0.8.0-alpha.webp)

<br>

- ### **v0.8.0-alpha - ( 19<sup>th</sup> of August 2022 )**

- ### πŸŽ‰ New Features and Updates
Expand Down Expand Up @@ -474,6 +556,10 @@

<br>

![Nora v0.7.0-alpha version artwork](assets/other/release%20artworks/whats-new-v0.7.0-alpha.webp)

<br>

- ### **v0.7.0-alpha - ( 27<sup>th</sup> of July 2022 )**

- ### πŸŽ‰ New Features and Updates
Expand Down
Loading