DashboardTab.update() had no else-branch for non-dict, non-physical
values, so string fields like charging.state/type, connectivity.state,
vehicle.state and numeric fields like position.lat/lon were silently
skipped. Mirrors the existing else-branch in _add_fields().
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
server/install.sh was broken after moving into server/: SCRIPT_DIR now
resolves to the server/ subdirectory, so requirements path, log dir, and
systemd WorkingDirectory all pointed at wrong locations. Introduce REPO_DIR
(parent of SCRIPT_DIR) and use it throughout.
client/install.sh creates a venv at client/.venv, installs
client/requirements.txt, and writes a client/run.sh launcher.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Move client.py and gui_client.py into client/, split root requirements.txt
into server/requirements.txt and client/requirements.txt, update install.sh
to reference server/requirements.txt.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>