mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-21 22:15:40 +00:00
feat(settings): add nisrael to contributors, update cucadmuh/kilyabin, move logout button
- Add nisrael (Nightfox themes PR #114, rustls-tls fix PR #112) - Update cucadmuh with gapless manual skip fix (PR #119) - Update kilyabin with RU locale improvements (PR #120) and auto-install script (PR #121) - Move logout button from System tab to Server tab — styled as btn-danger (outlined red) - Add .btn-danger CSS class to theme.css Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+28
-8
@@ -87,13 +87,23 @@ const CONTRIBUTORS = [
|
|||||||
since: '1.33.0',
|
since: '1.33.0',
|
||||||
contributions: [
|
contributions: [
|
||||||
'Russian translation & i18n locale split (PR #106)',
|
'Russian translation & i18n locale split (PR #106)',
|
||||||
|
'Gapless manual skip: honor user-initiated play over pre-chained track (PR #119)',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
github: 'kilyabin',
|
github: 'kilyabin',
|
||||||
since: '1.34.0',
|
since: '1.34.0',
|
||||||
contributions: [
|
contributions: [
|
||||||
'Alternative Russian translation (PR #107)',
|
'Russian locale improvements (PR #107, PR #120)',
|
||||||
|
'Auto-install script for Debian / RHEL (PR #121)',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
github: 'nisrael',
|
||||||
|
since: '1.34.0',
|
||||||
|
contributions: [
|
||||||
|
'Nightfox.nvim theme group in Open Source Classics (PR #114)',
|
||||||
|
'Switch reqwest to rustls-tls for cross-platform TLS (PR #112)',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
] as const;
|
] as const;
|
||||||
@@ -577,6 +587,17 @@ export default function Settings() {
|
|||||||
<span className="toggle-track" />
|
<span className="toggle-track" />
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="settings-section-divider" />
|
||||||
|
<div className="settings-toggle-row">
|
||||||
|
<div>
|
||||||
|
<div style={{ fontWeight: 500 }}>{t('settings.lyricsServerFirst')}</div>
|
||||||
|
<div style={{ fontSize: 12, color: 'var(--text-muted)' }}>{t('settings.lyricsServerFirstDesc')}</div>
|
||||||
|
</div>
|
||||||
|
<label className="toggle-switch" aria-label={t('settings.lyricsServerFirst')}>
|
||||||
|
<input type="checkbox" checked={auth.lyricsServerFirst} onChange={e => auth.setLyricsServerFirst(e.target.checked)} />
|
||||||
|
<span className="toggle-track" />
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@@ -825,7 +846,6 @@ export default function Settings() {
|
|||||||
{ value: 'nl', label: t('settings.languageNl') },
|
{ value: 'nl', label: t('settings.languageNl') },
|
||||||
{ value: 'nb', label: t('settings.languageNb') },
|
{ value: 'nb', label: t('settings.languageNb') },
|
||||||
{ value: 'ru', label: t('settings.languageRu') },
|
{ value: 'ru', label: t('settings.languageRu') },
|
||||||
{ value: 'ru2', label: t('settings.languageRu2') },
|
|
||||||
{ value: 'zh', label: t('settings.languageZh') },
|
{ value: 'zh', label: t('settings.languageZh') },
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
@@ -1206,6 +1226,12 @@ export default function Settings() {
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section className="settings-section">
|
||||||
|
<button className="btn btn-danger" onClick={handleLogout} id="settings-logout-btn">
|
||||||
|
<LogOut size={16} /> {t('settings.logout')}
|
||||||
|
</button>
|
||||||
|
</section>
|
||||||
|
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
@@ -1335,12 +1361,6 @@ export default function Settings() {
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<ChangelogSection />
|
<ChangelogSection />
|
||||||
|
|
||||||
<section className="settings-section">
|
|
||||||
<button className="btn btn-ghost" style={{ color: 'var(--danger)' }} onClick={handleLogout} id="settings-logout-btn">
|
|
||||||
<LogOut size={16} /> {t('settings.logout')}
|
|
||||||
</button>
|
|
||||||
</section>
|
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3678,6 +3678,23 @@ body.psy-dragging * {
|
|||||||
border-color: var(--ctp-overlay0);
|
border-color: var(--ctp-overlay0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn-danger {
|
||||||
|
background: transparent;
|
||||||
|
color: var(--danger);
|
||||||
|
border: 1px solid var(--danger);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-danger:hover {
|
||||||
|
background: var(--danger);
|
||||||
|
color: #fff;
|
||||||
|
transform: translateY(-1px);
|
||||||
|
box-shadow: 0 4px 12px color-mix(in srgb, var(--danger) 35%, transparent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-danger:active {
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
|
||||||
/* ─── Input ─── */
|
/* ─── Input ─── */
|
||||||
.input {
|
.input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
Reference in New Issue
Block a user