| 2026-10-10 |

feat: страница сервера — точек и опроса по длине периода, полоса по точным крайностям
...
За неделю страница тянула 1500 точек каждые 10 с (≈580 КБ, ~5 ГБ в сутки на
открытую вкладку). Теперь точек столько, сколько различимо на графике (400 на
час, 500 на 6 ч, 600 на сутки и неделю), а темп опроса растёт с периодом
(10/15/30/60 с) — ответ за неделю стал 109 КБ и приходит раз в минуту.
Полоса min–max рисуется без сглаживания (tension 0): со сглаживанием она
выгибалась за пределы min/max и показывала крайности, которых в дайджесте не
было.
Легенда пересчитывается при обновлении данных, а не только при создании
графика: график дисков создаётся, когда история ещё пуста (маунтов ноль), и
легенда ему не показывалась никогда. У CPU/RAM и сети она есть с рождения —
потому и не бросалось в глаза.
Маунты берутся ещё и из ключей agg.disks: диск, примонтированный внутри
схлопнутого часа и не доживший до выжившей точки, виден в легенде, а его
крайности — полосой из дайджеста.
Eugene Sukhodolskiy
committed
10 hours ago
|
feat: графики сервера — полоса min–max из дайджеста разряженной истории
...
Точка старше суток — это последний замер своего интервала; по полосе видно,
что было внутри (ChartLine принимает у серии band {min,max,n,exp} и рисует
заливку между границами: нижняя — невидимая линия, верхняя заливается к ней).
Полоса не дублируется в легенде, а в тултипе даёт диапазон и покрытие замеров
(«CPU: 3.2–98.4% · замеров 114/120»). Заведена для CPU/RAM, сети и дисков;
у сырых точек суток дайджеста нет — полосы там нет и не нужно.
Eugene Sukhodolskiy
committed
10 hours ago
|
| 2026-10-04 |
fix: линии графиков без цвета становились chart.js-дефолтом (не видно на тёмной теме)
...
- ChartLine: fallback — CHART_COLORS[0], watcher обновляет цвета серий
- сервисная страница: SERIES_MAIN #5BC795 (7.5:1 на #1E2522) + заливка
Eugene Sukhodolskiy
committed
6 days ago
|

feat: settings section + i18n (en/uk/ru) for the whole UI
...
Language comes from the gnexus-auth account profile by default; Settings
now hosts a per-service override that survives logouts and profile-webhook
syncs (users table keeps profile JSON verbatim, override in a separate
column that the upsert never touches). Open mode stores the choice in
localStorage.
- backend: users table (zero-migration, IF NOT EXISTS), app/locales.py
(normalize_locale/effective_locale), users upsert on session create and
user.updated webhook, GET /me returns locale + locale_effective,
new PATCH /api/v1/me (cookie-session only; 'auto'/'""' clears override)
- frontend: hand-rolled i18n mirror of gnexus-creds (locale ref, t() with
Slavic plurals, EN fallback), full dictionaries (~130 strings), <html
lang> + <title> tracked via watch; SettingsPage with language picker
(Auto/en/uk/ru); ServerCard/ServerPage/StoragePage status triple and
table columns unified into reactive computed t() lookups; fmtAgo/
fmtUptime localized; nav/login/shell translated; default html lang en
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
6 days ago
|
fix: double card-title padding in server cards
...
Nested span.card-title inside the kit's #title slot (which already
renders <header class="card-title">) doubled the left padding.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
6 days ago
|
| 2026-09-11 |
feat: network storage section — panel probes mounted shares itself
...
Backend: shares + share_samples tables, background probe loop
(os.statvfs every GHARD_SHARE_INTERVAL, 7-day retention, ok=0 when
the mount is unreachable), CRUD + samples API, instant first sample
on create/update, shares in MCP panel_overview.
Frontend: /storage page — share cards with status badge/progress/
used-free-total, 24h fill chart, add/delete via modal + confirm.
ChartLine shows a visible point while there are fewer than 3 samples.
README: CIFS/NFS mount + fstab examples, GHARD_SHARE_INTERVAL row.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
29 days ago
|
| 2026-09-10 |
feat: English UI, no-login API, logo/favicon, layout fixes
...
- UI fully translated to English (dashboard, server page, toasts, formatters)
- login removed: GHARD_ADMIN_TOKEN is optional now (unset = open API);
agent key auth untouched; README/.env.example updated
- SVG logo + favicon (monitor with pulse, kit-style)
- reactivity: dashboard poll 5s, server 5s, history 10s
- layout: metric cards full-row flex, metric value nowrap,
info/note 50/50 grid, topbar logo 48x48, server card max-width 420px,
uptime on its own line, delete confirmed via GnConfirmDialog
- docker: ca-certificates for npm git dependency
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
on 10 Sep
|
feat: stage 3 — Vue web UI (dashboard, server page, charts) + docker build
...
Frontend (Vue 3 + Vite, gnexus-ui-kit, chart.js):
- login by admin token (localStorage, Bearer)
- dashboard: server cards with status, CPU/RAM/disk progress, net MB/s, note
- server page: metric cards, info (hostname/os/kernel/ips), editable note,
history charts (1ч/6ч/24ч/7д), tabs: overview/disks/net/processes/docker
- create-server flow with one-time key display + install command
Backend: serve built SPA from panel/backend/static (assets mount + fallback)
Docker: multi-stage build (node:22 → npm ci/build → static into python image),
build context moved to repo root, .dockerignore added
Co-Authored-By: Claude Code <noreply@anthropic.com>
Eugene Sukhodolskiy
committed
on 10 Sep
|