Fix connectivity staleness, distinct checking dot, read-only groups, poll/probe robustness

This commit is contained in:
av
2026-07-18 16:45:36 +03:00
parent ec673b92f3
commit 7b08568d2c
4 changed files with 87 additions and 32 deletions
+11 -5
View File
@@ -9,20 +9,24 @@ GNOME, используя встроенный **Clash API**.
- монохромный индикатор-кружок (цвет берётся из цвета текста панели, поэтому
индикатор одинаково читается на тёмной и светлой теме):
- **залитый круг** — сервис работает и через активный outbound есть связь;
- **яркий залитый круг** — сервис работает и через активный outbound есть связь;
- **тусклый залитый круг** — сервис работает, связь ещё проверяется;
- **яркое сплошное кольцо** — сервис работает, но связи через outbound нет;
- **тусклое сплошное кольцо** — сервис работает, связь ещё проверяется;
- **пунктирное тусклое кольцо** — сервис (Clash API) недоступен / подключение.
Различие «есть связь / нет связи / проверяется» доступно только при включённой
опции «Connectivity check» (см. ниже) — иначе кружок просто залит, когда API
отвечает, и пунктирный, когда нет;
отвечает, и пунктирный, когда нет. Связь измеряется только для узла группы,
показанной в панели; реальный трафик может идти по другим правилам и группам —
см. разбивку соединений в меню;
- имя активного outbound (текущий узел группы);
- текущую скорость, например `↓2.4M ↑120k`.
- текущую скорость, например `↓2.4M ↑120K`.
**В выпадающем меню (подробности):**
- `sing-box · Active / Unreachable`;
- строка статуса: `sing-box · Active` / `Unreachable`, а при включённой проверке
связности также `Active (checking…)` (связь проверяется) и `No connectivity`
(связи через outbound нет);
- полная скорость (`↓ 2.4 MB/s ↑ 120 KB/s`);
- каждая группа outbound'ов отдельным подменю. **Selector**-группы переключаемы —
выбор узла меняет активный outbound; **URLTest/Fallback**-группы показываются только
@@ -94,10 +98,12 @@ API sing-box 1.13.13.
## Файлы
- `extension.js` — точка входа, добавляет кнопку в панель.
- `metadata.json` — метаданные расширения (UUID, версии GNOME Shell).
- `lib/indicator.js` — виджет панели, меню, цикл опроса, отрисовка.
- `lib/clashApi.js` — асинхронный клиент Clash API на libsoup 3.
- `lib/format.js` — форматирование байтов и скорости.
- `prefs.js` — настройки на Adwaita.
- `stylesheet.css` — стили индикатора и меню.
- `schemas/` — схема GSettings.
## Лицензия