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',
|
||||
contributions: [
|
||||
'Russian translation & i18n locale split (PR #106)',
|
||||
'Gapless manual skip: honor user-initiated play over pre-chained track (PR #119)',
|
||||
],
|
||||
},
|
||||
{
|
||||
github: 'kilyabin',
|
||||
since: '1.34.0',
|
||||
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;
|
||||
@@ -577,6 +587,17 @@ export default function Settings() {
|
||||
<span className="toggle-track" />
|
||||
</label>
|
||||
</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>
|
||||
</section>
|
||||
|
||||
@@ -825,7 +846,6 @@ export default function Settings() {
|
||||
{ value: 'nl', label: t('settings.languageNl') },
|
||||
{ value: 'nb', label: t('settings.languageNb') },
|
||||
{ value: 'ru', label: t('settings.languageRu') },
|
||||
{ value: 'ru2', label: t('settings.languageRu2') },
|
||||
{ value: 'zh', label: t('settings.languageZh') },
|
||||
]}
|
||||
/>
|
||||
@@ -1206,6 +1226,12 @@ export default function Settings() {
|
||||
</div>
|
||||
</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>
|
||||
|
||||
<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>
|
||||
|
||||
@@ -3678,6 +3678,23 @@ body.psy-dragging * {
|
||||
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 {
|
||||
width: 100%;
|
||||
|
||||
Reference in New Issue
Block a user