From 6e010a014196238117a31d414209fb5fc96b1552 Mon Sep 17 00:00:00 2001 From: Ivan Vasilev Date: Fri, 25 Sep 2026 17:21:56 +0300 Subject: [PATCH] Bump to Beta 0.3.0 Covers all six places the version is written down: .env, the copy install.sh keeps because it prints its banner and builds the release URL before the archive with .env exists, the three package.json files, and the /ui/brand example in the README. First release with the sen:// subscription and master keys. --- .env | 2 +- README.md | 2 +- awg-ctrl/package.json | 2 +- awg-ui/package.json | 2 +- awg-ui/sub.ts | 16 ++++++++++++++++ cli/package.json | 2 +- install.sh | 2 +- 7 files changed, 22 insertions(+), 6 deletions(-) diff --git a/.env b/.env index 19449f6..23b492f 100644 --- a/.env +++ b/.env @@ -11,4 +11,4 @@ BRAND=Forgetting CHANNEL=Beta -VERSION=0.2.2 +VERSION=0.3.0 diff --git a/README.md b/README.md index 51c2c1e..be94172 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,7 @@ TOKEN=$(curl -s -X POST http://HOST:PORT/login \ | Метод | Ответ | |---|---| -| `GET /ui/brand` | `{ "brand": "Forgetting", "channel": "Beta", "version": "0.2.2" }` — **без авторизации**, панель берёт отсюда вордмарк на экране логина | +| `GET /ui/brand` | `{ "brand": "Forgetting", "channel": "Beta", "version": "0.3.0" }` — **без авторизации**, панель берёт отсюда вордмарк на экране логина | | `GET /health` | `{ "status", "server", "ip", "gen", "awg": { "status", "peers", "module", "tools" } }`. `200`, если интерфейс поднят, иначе `503` и `status: "degraded"` | | `GET /awg/status` | `{ "up": true, "peers": 3, "publicKey": "…" }` | diff --git a/awg-ctrl/package.json b/awg-ctrl/package.json index 3ce2ed8..20dd05d 100644 --- a/awg-ctrl/package.json +++ b/awg-ctrl/package.json @@ -1,6 +1,6 @@ { "name": "awg-control", - "version": "0.2.2", + "version": "0.3.0", "description": "", "main": "dist/index.js", "scripts": { diff --git a/awg-ui/package.json b/awg-ui/package.json index 85b0d11..7ea5937 100644 --- a/awg-ui/package.json +++ b/awg-ui/package.json @@ -1,6 +1,6 @@ { "name": "awg-ui", - "version": "0.2.2", + "version": "0.3.0", "private": true, "scripts": { "dev": "vite", diff --git a/awg-ui/sub.ts b/awg-ui/sub.ts index 385acc0..42802e3 100644 --- a/awg-ui/sub.ts +++ b/awg-ui/sub.ts @@ -281,6 +281,22 @@ export function createSub(deps: { uidb: Database.Database; ctrl: Ctrl; baseDir: send(res, 200, { config: await buildConfig(dev) }); })); + // Устройства того же мастер-ключа: клиент показывает их на вкладке «Ключ». Только чтение — отвязать + // можно лишь себя (DELETE /sub/v1/device); чужие устройства убирает панель. + sub.get("/sub/v1/devices", deviceAuth, wrap(async (req, res) => { + const dev = (req as DevReq).device as DeviceRow; + const master = q.masterById.get(dev.master_id) as MasterRow | undefined; + if (!master) { send(res, 404, { error: "not_found" }); return; } + send(res, 200, { + name: master.label, + device_limit: master.device_limit, + devices: (q.devicesOf.all(master.id) as DeviceRow[]).map(d => ({ + id: d.id, name: d.device_name, platform: d.platform, version: d.version, + created_at: d.created_at, last_seen: d.last_seen, current: d.id === dev.id, + })), + }); + })); + sub.post("/sub/v1/rekey", deviceAuth, wrap(async (req, res) => { const dev = (req as DevReq).device as DeviceRow; const pub = (req.body as { pub_key?: unknown } | undefined)?.pub_key; diff --git a/cli/package.json b/cli/package.json index 42733ce..b2d0db2 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "awg-cli", - "version": "0.2.2", + "version": "0.3.0", "private": true, "dependencies": { "tsx": "^4.7.0", diff --git a/install.sh b/install.sh index 87ee719..a0d21f3 100644 --- a/install.sh +++ b/install.sh @@ -22,7 +22,7 @@ trap 'rc=$?; echo -e "\n ${RED}✗ НЕОЖИДАННАЯ ОШИБКА${NC} с # ⚠️ Дублирует .env из репозитория: установщик собирает URL релиза и печатает # баннер ДО того, как архив с .env скачан, поэтому взять их оттуда не может. # При бампе версии правь оба места. -VERSION="0.2.2" +VERSION="0.3.0" CHANNEL="${CHANNEL:-Beta}" # Откуда брать архив и как называется продукт — задаётся окружением, в коде