mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-22 07:15:47 +00:00
refactor(settings): thematic tab regroup + accordion sub-sections + in-page search (closes #257) (#259)
* refactor(settings): regroup tabs thematically + accordion sub-sections (progress on #257) New tab structure: Servers (first) · Library · Audio · Lyrics · Appearance · Personalisation · Integrations · Input · Storage · System · Users. Reusable SettingsSubSection (native <details>) wraps related settings per tab, with an optional action slot for per-section reset buttons. Moved: - Lyrics sources + sidebar lyrics style → Lyrics - Sidebar / artist layout / home customisers → Personalisation - Last.fm / Discord / Bandsintown / Now-playing share → Integrations (with an opt-in privacy banner at the top) - Tray / minimize / Linux smooth-scroll → System (new App-Verhalten group) - Preload mini-player / custom titlebar / show artist images → Appearance visual options - Language picker → System Audio, Appearance and System tabs are now fully accordion-grouped. Library tab reduced to Random Mix + Ratings accordions. Servers tab is its own home (server cards + AudioMuse + logout) and the default landing tab. Indicators in the titlebar and offline banner route to the right tab. EN + DE translations added for the new tab labels and privacy banner; other locales fall back to English until the full i18n pass lands. * refactor(settings): audio/input/storage/system accordions, in-page search, Navidrome focus Settings refactor progress — every tab is now accordion-grouped: - Audio: Output · Hi-Res · EQ · Playback · Next-track buffer - Input: Keybindings · Global shortcuts (reset in accordion action slot) - Storage: Offline · Downloads - System: Language (default open) · Behavior · Backup · Logging · About · Contributors - Contributors: own card grid with per-contributor expand, sorted by contribution count. Changelog accordion removed (release-notes link and "show changelog on update" toggle now live inside About). - About: Navidrome focus; AI credit and Special Thanks removed; new Maintainers row (Psychotoxical + cucadmuh). In-page search: magnifier icon next to the Settings title. Click opens a 240px search field. Filters the active tab's sub-sections by title match (data-settings-search). Cross-tab search is tracked as a follow-up. serverCompatible updated in all 8 locales from "Compatible with: Navidrome Gonic Airsonic Subsonic" to a Navidrome-first wording that warns other Subsonic-compatible servers may have reduced functionality. Full i18n pass (tabLyrics/tabPersonalisation/tabIntegrations, aboutDesc, privacy banner, etc. in fr/nl/zh/nb/ru/es) follows in a separate commit after visual review. * i18n(settings): complete localisation pass for refactored tabs Added in all 8 locales (fr, nl, zh, nb, ru, es — en+de already in place): - Tab labels: tabLibrary, tabServers, tabLyrics, tabPersonalisation, tabIntegrations - inputKeybindingsTitle, searchPlaceholder, searchNoResults, aboutMaintainersLabel - integrationsPrivacyTitle, integrationsPrivacyBody - aboutContributorsCount_one/_other (ru also _few/_many for proper plural forms) - aboutDesc rewritten to describe a Navidrome-focused player instead of a generic Subsonic-compatible one. Removed dead keys in all 8 locales: - aboutAiCredit, aboutSpecialThanksLabel — no longer rendered - changelog — inline changelog accordion removed - tabServer, tabGeneral — superseded by new tab structure --------- Co-authored-by: Psychotoxical <dev@psysonic.app>
This commit is contained in:
committed by
GitHub
parent
f6f76723d8
commit
2a496c600b
+15
-7
@@ -478,7 +478,7 @@ export const enTranslation = {
|
||||
serverFailed: 'Connection failed.',
|
||||
testBtn: 'Test Connection',
|
||||
testingBtn: 'Testing…',
|
||||
serverCompatible: 'Compatible with: Navidrome · Gonic · Airsonic · Subsonic',
|
||||
serverCompatible: 'Built for Navidrome. Other Subsonic-compatible servers (Gonic, Airsonic, …) may work with reduced functionality, since Psysonic uses many Navidrome-specific API endpoints.',
|
||||
userMgmtTitle: 'User Management',
|
||||
userMgmtDesc: 'Manage users on this server. Requires admin privileges.',
|
||||
userMgmtNoAdmin: 'You need admin privileges to manage users on this server.',
|
||||
@@ -655,18 +655,16 @@ export const enTranslation = {
|
||||
clearFolder: 'Clear download folder',
|
||||
logout: 'Logout',
|
||||
aboutTitle: 'About Psysonic',
|
||||
aboutDesc: 'A modern desktop music player for Subsonic-compatible servers (Navidrome, Gonic, and others). Built on Tauri v2 with a native Rust audio engine — lightweight and fast, yet packed with features: waveform seekbar, synchronized lyrics, Last.fm integration, 10-band EQ, crossfade, gapless playback, Replay Gain, genre browsing, and a large library of themes.',
|
||||
aboutDesc: 'A modern desktop music player built for Navidrome. Uses the Subsonic API plus Navidrome-specific extensions. Built on Tauri v2 with a native Rust audio engine — lightweight and fast, yet packed with features: waveform seekbar, synchronized lyrics, Last.fm integration, 10-band EQ, crossfade, gapless playback, Replay Gain, genre browsing, and a large library of themes.',
|
||||
aboutLicense: 'License',
|
||||
aboutLicenseText: 'GNU GPL v3 — free to use, modify, and distribute under the same license.',
|
||||
aboutRepo: 'Source Code on GitHub',
|
||||
aboutVersion: 'Version',
|
||||
aboutBuiltWith: 'Built with Tauri · React · TypeScript · Rust/rodio',
|
||||
aboutAiCredit: 'Developed with the support of Claude Code by Anthropic',
|
||||
aboutMaintainersLabel: 'Maintainers',
|
||||
aboutReleaseNotesLabel: 'Release notes',
|
||||
aboutReleaseNotesLink: "Open this version's what's-new",
|
||||
aboutContributorsLabel: 'Contributors',
|
||||
aboutSpecialThanksLabel: 'Special Thanks',
|
||||
changelog: 'Changelog',
|
||||
showChangelogOnUpdate: "Show 'What's New' on update",
|
||||
showChangelogOnUpdateDesc: "Show a discreet changelog banner above Now Playing after an update. Click opens the release notes; X dismisses it.",
|
||||
randomMixTitle: 'Random Mix',
|
||||
@@ -679,6 +677,18 @@ export const enTranslation = {
|
||||
tabAudio: 'Audio',
|
||||
tabStorage: 'Storage & Downloads',
|
||||
tabAppearance: 'Appearance',
|
||||
tabLibrary: 'Library',
|
||||
tabServers: 'Servers',
|
||||
tabLyrics: 'Lyrics',
|
||||
tabPersonalisation: 'Personalisation',
|
||||
tabIntegrations: 'Integrations',
|
||||
inputKeybindingsTitle: 'Keyboard shortcuts',
|
||||
aboutContributorsCount_one: '{{count}} contribution',
|
||||
aboutContributorsCount_other: '{{count}} contributions',
|
||||
searchPlaceholder: 'Search settings…',
|
||||
searchNoResults: 'No matching settings in this tab. Try another tab.',
|
||||
integrationsPrivacyTitle: 'Privacy notice',
|
||||
integrationsPrivacyBody: 'All integrations on this tab are <strong>opt-in</strong> and send data to external services or to your Navidrome server when enabled. Last.fm receives your listening history, Discord shows the currently playing track in your profile, Bandsintown is queried per artist to fetch tour dates, and the Now-Playing share publishes your current track to other users of your Navidrome server. If you don\'t want any of this, simply leave the corresponding section disabled.',
|
||||
homeCustomizerTitle: 'Home Page',
|
||||
sidebarTitle: 'Sidebar',
|
||||
sidebarReset: 'Reset to default',
|
||||
@@ -695,7 +705,6 @@ export const enTranslation = {
|
||||
randomNavSplitTitle: 'Split Mix navigation',
|
||||
randomNavSplitDesc: 'Show "Random Mix" and "Random Albums" as separate sidebar entries instead of the "Build a Mix" hub.',
|
||||
tabInput: 'Input',
|
||||
tabServer: 'Server',
|
||||
tabUsers: 'Users',
|
||||
tabSystem: 'System',
|
||||
loggingTitle: 'Logging',
|
||||
@@ -706,7 +715,6 @@ export const enTranslation = {
|
||||
loggingExport: 'Export logs',
|
||||
loggingExportSuccess: 'Logs exported ({{count}} lines).',
|
||||
loggingExportError: 'Could not export logs.',
|
||||
tabGeneral: 'General',
|
||||
ratingsSectionTitle: 'Ratings',
|
||||
ratingsSkipStarTitle: 'Skip for 1 star',
|
||||
ratingsSkipStarDesc:
|
||||
|
||||
Reference in New Issue
Block a user