diff --git a/server.log b/server.log index baf603b..e6ef587 100644 --- a/server.log +++ b/server.log @@ -1,45 +1,6 @@ -INFO: Started server process [66120] +INFO: Started server process [67655] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) -INFO: 192.168.5.30:49722 - "GET /api/status HTTP/1.1" 401 Unauthorized -INFO: 192.168.5.30:49722 - "GET /login HTTP/1.1" 200 OK -INFO: 127.0.0.1:42868 - "GET /favicon.ico HTTP/1.1" 200 OK -INFO: 127.0.0.1:42870 - "GET / HTTP/1.1" 200 OK -/home/devmatrix/projects/fan-controller-v2/web_server.py:153: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). - self._sessions[token] = (username, datetime.utcnow() + timedelta(days=7)) -INFO: 192.168.5.30:59631 - "POST /api/auth/login HTTP/1.1" 200 OK -INFO: 192.168.5.30:59631 - "GET / HTTP/1.1" 200 OK -INFO: 192.168.5.30:50885 - "GET /icons/server-stack.svg HTTP/1.1" 304 Not Modified -INFO: 192.168.5.30:59631 - "GET /icons/fan.svg HTTP/1.1" 200 OK -INFO: 192.168.5.30:60198 - "GET /icons/arrow-right-on-rectangle.svg HTTP/1.1" 304 Not Modified -INFO: 192.168.5.30:61475 - "GET /icons/lock-closed.svg HTTP/1.1" 304 Not Modified -INFO: 192.168.5.30:60157 - "GET /icons/clock.svg HTTP/1.1" 304 Not Modified -/home/devmatrix/projects/fan-controller-v2/web_server.py:160: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). - if datetime.utcnow() > expiry: -2026-02-20 19:46:20,781 - fan_controller - INFO - Loaded config from /home/devmatrix/projects/fan-controller-v2/data/config.json -INFO: 192.168.5.30:61475 - "GET /api/status HTTP/1.1" 200 OK -INFO: 192.168.5.30:59908 - "GET /icons/sun.svg HTTP/1.1" 304 Not Modified -INFO: 192.168.5.30:60198 - "GET /icons/wifi.svg HTTP/1.1" 304 Not Modified -INFO: 192.168.5.30:50885 - "GET /icons/list-bullet.svg HTTP/1.1" 304 Not Modified -INFO: 192.168.5.30:60157 - "GET /icons/fire.svg HTTP/1.1" 304 Not Modified -INFO: 192.168.5.30:61475 - "GET /icons/adjustments-horizontal.svg HTTP/1.1" 304 Not Modified -INFO: 192.168.5.30:59908 - "GET /icons/viewfinder-circle.svg HTTP/1.1" 304 Not Modified -INFO: 192.168.5.30:59631 - "GET /icons/chart-bar.svg HTTP/1.1" 304 Not Modified -INFO: 192.168.5.30:50885 - "GET /icons/document-text.svg HTTP/1.1" 304 Not Modified -INFO: 192.168.5.30:50885 - "GET /favicon.ico HTTP/1.1" 200 OK -INFO: 192.168.5.30:50885 - "GET /api/status HTTP/1.1" 200 OK -INFO: 192.168.5.30:50885 - "GET /api/status HTTP/1.1" 200 OK -INFO: 192.168.5.30:50885 - "GET /api/status HTTP/1.1" 200 OK -INFO: 192.168.5.30:50885 - "GET /api/status HTTP/1.1" 200 OK -INFO: 192.168.5.30:50885 - "GET /api/status HTTP/1.1" 200 OK -INFO: 192.168.5.30:50885 - "GET /api/status HTTP/1.1" 200 OK -INFO: 192.168.5.30:50885 - "GET / HTTP/1.1" 200 OK -INFO: 192.168.5.30:58311 - "GET /api/status HTTP/1.1" 200 OK -INFO: 192.168.5.30:50885 - "GET /icons/fan.svg HTTP/1.1" 304 Not Modified -INFO: 192.168.5.30:50885 - "GET /api/status HTTP/1.1" 200 OK -INFO: 192.168.5.30:50885 - "GET /api/status HTTP/1.1" 200 OK -INFO: 192.168.5.30:50885 - "GET / HTTP/1.1" 200 OK -INFO: 192.168.5.30:50885 - "GET /api/status HTTP/1.1" 200 OK -INFO: 192.168.5.30:50885 - "GET /login HTTP/1.1" 200 OK -INFO: 192.168.5.30:50885 - "GET /login HTTP/1.1" 200 OK +INFO: 127.0.0.1:38442 - "GET / HTTP/1.1" 200 OK +INFO: 127.0.0.1:36660 - "GET / HTTP/1.1" 200 OK diff --git a/web_server.py b/web_server.py index 8c4d9a8..3e7f87d 100644 --- a/web_server.py +++ b/web_server.py @@ -277,10 +277,10 @@ def get_html(theme="dark"): transition: all 0.2s; }} .status-item:hover {{ transform: translateY(-2px); }} - .status-item .icon { width: 32px; height: 32px; margin: 0 auto 8px; } - .status-item .icon img { width: 100%; height: 100%; filter: brightness(0) invert(1); image-rendering: crisp-edges; image-rendering: -webkit-optimize-contrast; } - .icon-svg { width: 20px; height: 20px; display: inline-block; vertical-align: middle; margin-right: 6px; filter: brightness(0) invert(1); image-rendering: crisp-edges; image-rendering: -webkit-optimize-contrast; } - .icon-logo { width: 32px; height: 32px; display: inline-block; vertical-align: middle; margin-right: 8px; filter: brightness(0) invert(1); image-rendering: crisp-edges; image-rendering: -webkit-optimize-contrast; } + .status-item .icon {{ width: 32px; height: 32px; margin: 0 auto 8px; }} + .status-item .icon img {{ width: 100%; height: 100%; filter: brightness(0) invert(1); image-rendering: crisp-edges; image-rendering: -webkit-optimize-contrast; }} + .icon-svg {{ width: 20px; height: 20px; display: inline-block; vertical-align: middle; margin-right: 6px; filter: brightness(0) invert(1); image-rendering: crisp-edges; image-rendering: -webkit-optimize-contrast; }} + .icon-logo {{ width: 32px; height: 32px; display: inline-block; vertical-align: middle; margin-right: 8px; filter: brightness(0) invert(1); image-rendering: crisp-edges; image-rendering: -webkit-optimize-contrast; }} .status-item .label {{ font-size: 0.75rem; color: var(--text-secondary); margin-bottom: 3px; }} .status-item .value {{ font-size: 1.1rem; font-weight: bold; }} .status-item .value.good {{ color: var(--accent-success); }}