| Files | Last commit | Last update |
|---|---|---|
feat(ui): pick transport at startup and keep the mode visible The frontend called invoke() directly, so outside Tauri it silently fell back to demoBundle() — a browser could only ever see fake processes. Now transport.ts resolves IPC vs REST vs demo once at boot, shares one probe across concurrent callers, and broadcasts the result so the badge can switch from its placeholder. isTauri() stays a synchronous check (no network), because the first frame must not flicker into the wrong mode; isBackend() is the "do I have real data" question that pages ask. Header and sidebar show Live / Web · live data / Demo so a number on screen is never ambiguous. Three defects found while verifying the result visually: - port "open" was hardcoded to http://localhost:PORT — wrong for IPv6 listeners, HTTPS services and UDP ports; now derived from the actual listen address with UDP dropped. - every overlay used bg-black/55, which in the (now default) light theme turned the page into grey mud under a 2px blur; scrim colour follows data-chart-theme. - the cost trend axis mixed 2026-06 (monthly bucket) with 10-25 (daily), so readers could not tell which points were months; unified to 26/6月 vs 10-25, and the parser now checks shape instead of length so "unknown" no longer becomes un/NaN月. | 2 days ago |