From 79bb1fa78bd17fec34f70f865f2812f95e2c02ee Mon Sep 17 00:00:00 2001 From: iamdoubz Date: Tue, 27 Oct 2026 18:37:53 -0500 Subject: [PATCH] release: version 0.0.10 --- CHANGELOG.md | 22 ++++++++++++++++++++++ README.md | 5 ++++- apps/api/package.json | 2 +- apps/probe/package.json | 2 +- apps/web/package.json | 2 +- docs/admin-guide/network.md | 2 +- package.json | 2 +- packages/shared/package.json | 2 +- 8 files changed, 32 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84d6356..c464dca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,28 @@ tag (08 §3.1): `selfphoneng-api`, `selfphoneng-asterisk` and `selfphoneng-probe the Gitea registry. From v0.0.3 the release also has the probe as downloads for machines without Docker. +## v0.0.10 — 2026-10-27 + +**Before you update:** this version changes the database (spam check); the api backs up first, +by itself. Portainer: change both tags to `0.0.10` and redeploy. Compose: +`sudo scripts/update.sh v0.0.10`. + +- **Spam check** (spec 14, off until you turn it on in Settings → Spam check): when an outside + US caller isn't in the company's or your contacts, the number is looked up and what's known + shows while it rings. The browser phone shows a **Likely spam** or **Possible spam** badge with + a line such as "Fraud score 92 · spammer · VOIP"; desk phones show the caller's name as + **SPAM LIKELY** or **Spam risk** (you can change these) when the answer is quick; call + history keeps the badge. It's information only: calls are never blocked or delayed, and a + failed lookup just shows nothing. Two sources, either or both: + - **IPQualityScore** (1,000 lookups a month free): sends callers' numbers to IPQualityScore, + so turning it on asks you to confirm. Answers are kept 14 days for flagged numbers and 3 for + the rest. When the lookups run out the dashboard says so, checks fall back to the FTC list, + and it carries on by itself when lookups are back. + - **FTC complaint list** (free api.data.gov key): downloaded to the server, so nothing leaves + it. The first download takes about 7 hours; then it fetches what's new every 24 hours. + - See the [admin guide](docs/admin-guide/spam-check.md), including privacy and GDPR. +- Database changes: `spam_lookups`, `ftc_complaints` (the api backs up first). + ## v0.0.9 — 2026-10-27 **Before you update:** this version changes the database (paired phones); the api backs up first, diff --git a/README.md b/README.md index 81f558e..bf41d52 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A fully open source, self-hosted business phone system. Bring your own SIP trunk and numbers (reference provider: voip.ms). Built on Asterisk 24 + TypeScript + PostgreSQL 18, runs in Docker. -**Status:** pre-1.0 (v0.0.9), for testing. See [what's left for v1](docs/v1-checklist.md). +**Status:** pre-1.0 (v0.0.10), for testing. See [what's left for v1](docs/v1-checklist.md). ## What it does today @@ -19,6 +19,9 @@ A fully open source, self-hosted business phone system. Bring your own SIP trunk pickup, conference rooms, paging and intercom, music on hold. - **Voicemail** with email (and transcripts by local AI), **call history**, **recordings**, a **live dashboard** (listen, whisper, barge) and reports. +- **Spam check** (off until you turn it on): outside callers who aren't contacts are looked up + with IPQualityScore or the FTC complaint list, and flagged in the browser phone, on desk phones + and in call history. Calls are never blocked. - **Running it:** updates (`scripts/update.sh` for compose installs; a backup before every database change), backups and restore, background health checks, webhooks and API tokens, two-step sign-in for admins, limits on outside calls at once. diff --git a/apps/api/package.json b/apps/api/package.json index e9e5d2a..ea84503 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -1,6 +1,6 @@ { "name": "@selfphoneng/api", - "version": "0.0.9", + "version": "0.0.10", "private": true, "license": "AGPL-3.0-or-later", "type": "module", diff --git a/apps/probe/package.json b/apps/probe/package.json index d24be46..ba3c34c 100644 --- a/apps/probe/package.json +++ b/apps/probe/package.json @@ -1,6 +1,6 @@ { "name": "@selfphoneng/probe", - "version": "0.0.9", + "version": "0.0.10", "private": true, "license": "AGPL-3.0-or-later", "type": "module", diff --git a/apps/web/package.json b/apps/web/package.json index 9b9856e..6330667 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@selfphoneng/web", - "version": "0.0.9", + "version": "0.0.10", "private": true, "license": "AGPL-3.0-or-later", "type": "module", diff --git a/docs/admin-guide/network.md b/docs/admin-guide/network.md index 08a0703..6be6fe0 100644 --- a/docs/admin-guide/network.md +++ b/docs/admin-guide/network.md @@ -89,7 +89,7 @@ needs inside (`selfphoneng-probe-linux-x64`, or `-arm64` for ARM machines), next With Node 22 or newer installed you can take the small `selfphoneng-probe.cjs` instead. ```sh -v=v0.0.9 # the release +v=v0.0.10 # the release curl -fLO https://git.dou.bet/spng/selfphoneng/releases/download/$v/selfphoneng-probe-linux-x64 curl -fLO https://git.dou.bet/spng/selfphoneng/releases/download/$v/SHA256SUMS sha256sum --check --ignore-missing SHA256SUMS diff --git a/package.json b/package.json index dc22919..542bad4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "selfphoneng", - "version": "0.0.9", + "version": "0.0.10", "private": true, "license": "AGPL-3.0-or-later", "type": "module", diff --git a/packages/shared/package.json b/packages/shared/package.json index 6fa9ea3..2dbdedd 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@selfphoneng/shared", - "version": "0.0.9", + "version": "0.0.10", "private": true, "license": "AGPL-3.0-or-later", "type": "module",