feat(frontend): add weather icons and redesign calendar header

Backend changes:
- Add LOCATION configuration option to Settings
- Add /api/system/config endpoint to expose public config
- Implement location priority: config > geolocation > default

Frontend changes:
- Install and integrate weather-icons npm package (Erik Flowers)
- Redesign calendar header with date/time on left, weather/location on right
- Display weather icon using CSS classes instead of SVG components
- Fetch location from backend API on component mount
- Use configured location name (from .env) instead of geocoded result

Layout:
- Left: month/year + current time
- Right: city name + weather description + weather icon
This commit is contained in:
2026-04-06 22:18:44 +08:00
parent ff042cd932
commit 712d9e1652
9 changed files with 133 additions and 22 deletions

View File

@@ -1,5 +1,6 @@
from datetime import datetime, UTC
from time import monotonic
import os
import platform
import socket
import subprocess
@@ -15,6 +16,11 @@ class SystemService:
_last_net_bytes_recv: int | None = None
_last_net_sample_at: float | None = None
def __init__(self):
# Import settings here to avoid circular imports
from app.config import settings
self._settings = settings
def _get_network_rates(self) -> tuple[float, float]:
counters = psutil.net_io_counters()
now = monotonic()
@@ -127,3 +133,9 @@ class SystemService:
**gpu_status,
'timestamp': datetime.now(UTC).isoformat(),
}
def get_config(self) -> dict:
"""Get public system configuration."""
return {
'location': self._settings.LOCATION,
}