Estil targeta tipus web a les files + tema seleccionable (system/clar/fosc)
UI: - Files amb estil de targeta: icona arrodonida, títol gran, subtítol atenuat i 'pills' amb estat, versió, data de llançament, jugadors, autor i topics. Els pills envolten amb un FlowLayout nou quan no caben. - Submenú Opcions > Tema amb Sistema/Clar/Fosc; persisteix a settings.json (theme) i s'aplica a l'instant. El watcher del SO només actua en mode Sistema. Dades: - GameMeta guarda topics i created_at, llegits de la resposta de Gitea que ja demanàvem (gratis, auto-sincronitzats). - games.toml: camps opcionals players i author per joc (la resta surt de Gitea). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -10,6 +10,13 @@ from .paths import base_dir
|
||||
|
||||
SETTINGS_NAME = "settings.json"
|
||||
|
||||
_THEMES = ("system", "light", "dark")
|
||||
|
||||
|
||||
def _valid_theme(value) -> str:
|
||||
"""Normaliza el tema a uno válido; cae a 'system' si es desconocido."""
|
||||
return value if value in _THEMES else "system"
|
||||
|
||||
|
||||
@dataclass
|
||||
class Settings:
|
||||
@@ -17,6 +24,7 @@ class Settings:
|
||||
updates_pending: list[str] = field(default_factory=list) # ids con update pendiente
|
||||
gitea_token: str = "" # token personal de Gitea para repos privados (no se versiona)
|
||||
check_updates_on_start: bool = False # comprobar updates automáticamente al iniciar
|
||||
theme: str = "system" # tema de la UI: "system" | "light" | "dark"
|
||||
# Tolerancia a repos offline/inalcanzables (segundos, salvo stall_limit en bytes/s).
|
||||
git_fetch_timeout: int = 60 # techo para fetch / comprobar update
|
||||
git_clone_timeout: int = 900 # techo para clone (repo grande)
|
||||
@@ -42,6 +50,7 @@ def load_settings() -> Settings:
|
||||
updates_pending=list(data.get("updates_pending", [])),
|
||||
gitea_token=str(data.get("gitea_token", "")),
|
||||
check_updates_on_start=bool(data.get("check_updates_on_start", False)),
|
||||
theme=_valid_theme(data.get("theme", "system")),
|
||||
git_fetch_timeout=int(data.get("git_fetch_timeout", 60)),
|
||||
git_clone_timeout=int(data.get("git_clone_timeout", 900)),
|
||||
http_timeout=int(data.get("http_timeout", 15)),
|
||||
|
||||
Reference in New Issue
Block a user