Compare commits

..

7 Commits

Author SHA1 Message Date
jeffvli 7d29a692ef remove unused import 2025-06-24 22:34:06 -07:00
jeffvli 3f9eb446f7 update to v0.15.1 2025-06-24 22:27:12 -07:00
jeffvli d8f7b49ab6 increase size of play button icon 2025-06-24 22:22:15 -07:00
jeffvli 35e70a3eff fix synchronized lyric styles not applying 2025-06-24 22:20:26 -07:00
jeffvli ef9c16e940 attempt fix on docker build 2025-06-24 22:16:16 -07:00
Kendall Garner 0b39c35132 make item modal links have heavier font width 2025-06-24 21:39:47 -07:00
Kendall Garner 9f5b4e5410 remove unused length in visualizer 2025-06-24 21:20:41 -07:00
8 changed files with 24 additions and 53 deletions
+4 -6
View File
@@ -24,11 +24,9 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=raw,value=latest,enable={{is_default_branch}}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Setup Docker buildx
@@ -41,6 +39,6 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: |
linux/amd64
linux/arm/v7
linux/arm64/v8
linux/amd64
linux/arm/v7
linux/arm64/v8
+1 -3
View File
@@ -1,6 +1,6 @@
{
"name": "feishin",
"version": "0.15.0",
"version": "0.15.1",
"description": "A modern self-hosted music player.",
"keywords": [
"subsonic",
@@ -170,9 +170,7 @@
},
"pnpm": {
"onlyBuiltDependencies": [
"abstract-socket",
"electron",
"electron-winstaller",
"esbuild"
]
},
@@ -66,7 +66,7 @@ const formatArtists = (artists: null | RelatedArtist[] | undefined) =>
{artist.id ? (
<Text
component={Link}
fw={500}
fw={700}
isLink
overflow="visible"
size="md"
@@ -106,7 +106,7 @@ const FormatGenre = (item: Album | AlbumArtist | Playlist | Song) => {
{index > 0 && <Separator />}
<Text
component={Link}
fw={500}
fw={700}
isLink
overflow="visible"
size="md"
@@ -260,7 +260,7 @@ const SongPropertyMapping: ItemDetailRow<Song>[] = [
song.album && (
<Text
component={Link}
fw={500}
fw={700}
isLink
overflow="visible"
size="md"
@@ -6,16 +6,16 @@
transition:
opacity 0.3s ease-in-out,
transform 0.3s ease-in-out;
&.active {
opacity: 1;
}
&.unsynchronized {
opacity: 1;
}
&.synchronized {
cursor: pointer;
}
}
.lyric-line:global(.active) {
opacity: 1 !important;
}
.lyric-line:global(.unsynchronized) {
opacity: 1;
}
.lyric-line:global(.synchronized) {
cursor: pointer;
}
@@ -1,3 +0,0 @@
.active {
opacity: 1;
}
@@ -3,7 +3,6 @@ import isElectron from 'is-electron';
import { useCallback, useEffect, useRef } from 'react';
import styles from './synchronized-lyrics.module.css';
import './synchronized-lyrics.css';
import { LyricLine } from '/@/renderer/features/lyrics/lyric-line';
import { useScrobble } from '/@/renderer/features/player/hooks/use-scrobble';
@@ -63,6 +63,9 @@ export const PlayButton = ({ isPaused, ...props }: PlayButtonProps) => {
<ActionIcon
className={styles.main}
icon={isPaused ? 'mediaPlay' : 'mediaPause'}
iconProps={{
size: 'lg',
}}
tooltip={
isPaused
? t('player.play', { postProcess: 'sentenceCase' })
@@ -1,5 +1,5 @@
import AudioMotionAnalyzer from 'audiomotion-analyzer';
import { createRef, useCallback, useEffect, useState } from 'react';
import { createRef, useEffect, useState } from 'react';
import styles from './visualizer.module.css';
@@ -12,8 +12,6 @@ export const Visualizer = () => {
const accent = useSettingsStore((store) => store.general.accent);
const [motion, setMotion] = useState<AudioMotionAnalyzer>();
const [, setLength] = useState(500);
useEffect(() => {
const { context, gain } = webAudio || {};
if (gain && context && canvasRef.current && !motion) {
@@ -35,28 +33,6 @@ export const Visualizer = () => {
return () => {};
}, [accent, canvasRef, motion, webAudio]);
const resize = useCallback(() => {
const body = document.querySelector('.full-screen-player-queue-container');
const header = document.querySelector('.full-screen-player-queue-header');
if (body && header) {
const width = body.clientWidth - 30;
const height = body.clientHeight - header.clientHeight - 30;
setLength(Math.min(width, height));
}
}, []);
useEffect(() => {
resize();
window.addEventListener('resize', resize);
return () => {
window.removeEventListener('resize', resize);
};
}, [resize]);
return (
<div
className={styles.container}