Consolidate tabs, Quick Access links, mini player nav, link descriptions

- Merge Scripts/Callbacks/Links tabs into single Settings tab with collapsible sections
- Rename Actions tab to Quick Access showing both scripts and configured links
- Add prev/next buttons to mini (secondary) player
- Add optional description field to links (backend + frontend)
- Add CSS chevron indicators on collapsible settings sections
- Persist section collapse/expand state in localStorage
- Fix race condition in Quick Access rendering with generation counter
- Order settings sections: Scripts, Links, Callbacks

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-27 15:08:09 +03:00
parent 99dbbb1019
commit adf2d936da
7 changed files with 324 additions and 150 deletions

View File

@@ -23,6 +23,7 @@ class LinkInfo(BaseModel):
url: str
icon: str
label: str
description: str
class LinkCreateRequest(BaseModel):
@@ -31,6 +32,7 @@ class LinkCreateRequest(BaseModel):
url: str = Field(..., description="URL to open", min_length=1)
icon: str = Field(default="mdi:link", description="MDI icon name (e.g., 'mdi:led-strip-variant')")
label: str = Field(default="", description="Tooltip text")
description: str = Field(default="", description="Optional description")
def _validate_link_name(name: str) -> None:
@@ -67,6 +69,7 @@ async def list_links(_: str = Depends(verify_token)) -> list[LinkInfo]:
url=config.url,
icon=config.icon,
label=config.label,
description=config.description,
)
for name, config in settings.links.items()
]