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:
@@ -3,7 +3,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from dataclasses import asdict, dataclass
|
||||
from dataclasses import asdict, dataclass, field
|
||||
from pathlib import Path
|
||||
|
||||
from .paths import metadata_dir
|
||||
@@ -18,6 +18,8 @@ class GameMeta:
|
||||
version: str = ""
|
||||
default_branch: str = "main"
|
||||
updated_at: str = "" # ISO-8601; lo rellena el worker tras un update
|
||||
topics: list[str] = field(default_factory=list) # tags de Gitea (controller, sdl3…)
|
||||
created_at: str = "" # ISO-8601 de creación del repo en Gitea (≈ lanzamiento)
|
||||
|
||||
|
||||
def info_path(root: Path, game_id: str) -> Path:
|
||||
@@ -42,6 +44,8 @@ def load_meta(root: Path, game_id: str) -> GameMeta:
|
||||
version=data.get("version", ""),
|
||||
default_branch=data.get("default_branch", "main"),
|
||||
updated_at=data.get("updated_at", ""),
|
||||
topics=list(data.get("topics", [])),
|
||||
created_at=data.get("created_at", ""),
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user