118 lines
7.5 KiB
Markdown
118 lines
7.5 KiB
Markdown
# Changelog
|
||
|
||
Versions follow [semver](https://semver.org). Each release's container images are built from its
|
||
tag (08 §3.1): `selfphoneng-api`, `selfphoneng-asterisk` and `selfphoneng-probe`, on ghcr.io and on
|
||
the Gitea registry. From v0.0.3 the release also has the probe as downloads for machines without
|
||
Docker.
|
||
|
||
## v0.0.6 — 2026-10-21
|
||
|
||
**Before you update:** this version changes the database (call transcripts); the api backs up
|
||
first, by itself. Portainer: change both tags to `0.0.6` and redeploy. Compose:
|
||
`sudo scripts/update.sh v0.0.6`. Call transcripts are off until you turn them on in Settings → AI;
|
||
calls recorded before that get no transcript.
|
||
|
||
- **Call transcripts and summaries** (Settings → AI, admin guide: [Local AI](docs/admin-guide/ai.md)):
|
||
recorded calls are written out a minute or two after they end, caller and other side apart, with
|
||
a summary and action items from the language model. The Recordings page shows them and searches
|
||
what was said; the people on a call can read its transcript. Database change: four columns on
|
||
`recordings` (the api backs up first).
|
||
|
||
## v0.0.5 — 2026-10-21
|
||
|
||
**Before you update:** this version changes the database (voicemail transcripts); the api backs
|
||
up first, by itself. Portainer: change both tags to `0.0.5` and redeploy. Compose:
|
||
`sudo scripts/update.sh v0.0.5`. The AI is optional and off until you set it up: a second stack
|
||
from `deploy/ai/compose.yml`, then Settings → AI (admin guide: [Local AI](docs/admin-guide/ai.md)).
|
||
After updating, phones set up automatically pick up the dial plan at their next daily check (or
|
||
reboot them).
|
||
|
||
- Admin guide: [Analog phones (ATAs)](docs/admin-guide/ata.md), setting up a Grandstream HT802 V2
|
||
by hand.
|
||
- **Dial plan:** a user's Credentials tab shows a dial plan for analog phone adapters, made from
|
||
your outbound routes and internal number lengths: 911 and full outside numbers go out the moment
|
||
they're dialed instead of after a pause. Yealink desk phones get the same as dial-now rules.
|
||
- New internal numbers can no longer start with 911 or 9911, so 911 can go out at once (numbers
|
||
you already have keep working).
|
||
- **Local AI** (admin guide: [Local AI](docs/admin-guide/ai.md)): Settings → AI sets a language
|
||
model, speech to text and text to speech, each with a Test, on this server or the local network
|
||
only (anything else is refused). `deploy/ai/compose.yml` is a second stack with Speaches
|
||
(Whisper and Kokoro) on the GPU. `AI_*` in `.env` sets them on a new install.
|
||
- **Voicemail transcripts:** with AI on, a new message's words are in the voicemail email and on the
|
||
voicemail page. Database change: `voicemail_messages.transcript` (the api backs up first).
|
||
|
||
## v0.0.4 — 2026-10-21
|
||
|
||
**Updating:** no database changes. Portainer: change both tags to `0.0.4` and redeploy. Compose:
|
||
`sudo scripts/update.sh v0.0.4`.
|
||
|
||
- Settings → Security has the **SIP port** and **Accept SIP over TCP** (5060 and on by default,
|
||
as before). Both were settings with no field. Another port, such as 5080, helps when a router or
|
||
the ISP keeps UDP 5060 for itself: a Complete network test shows UDP getting through while SIP
|
||
on UDP 5060 doesn't. Changing it needs a telephony restart, a new router forward and setting the
|
||
phones up again; trunks keep working. A port that another part of SelfPhoneNG listens on is
|
||
refused. The admin guide (Network) explains when to change it.
|
||
|
||
## v0.0.3 — 2026-10-21
|
||
|
||
**Before you update:** this version changes the database (music-on-hold order). The api backs up
|
||
first, by itself (see the admin guide, Updating). Compose installs from v0.0.2 get
|
||
`scripts/update.sh` with the release: `git fetch --tags && git checkout v0.0.3`, then
|
||
`sudo scripts/update.sh v0.0.3`. Portainer: change both tags to `0.0.3` and redeploy. Optional:
|
||
`RTP_PORT_START`/`RTP_PORT_END` on the api, then open that range instead of 10000–20000.
|
||
|
||
- **Any internal number:** users, ring groups, queues, digital receptionists, conference rooms and
|
||
paging groups take any free number of 1 to 6 digits, for example **1** for the first user (the
|
||
setup wizard asks for it too). Settings → **Numbering** sets where **Next free** looks. A
|
||
one-digit number and a menu key of a digital receptionist that lets callers dial numbers can't
|
||
be the same. Ring groups, queues, voicemail, pickup (`**`), queue login (`*45`), forwarding
|
||
(`*72`) and intercom (`*80`) now work with one-digit numbers.
|
||
- **Music on hold order:** a set plays in the order shown on Sounds & music (move files up and
|
||
down; new uploads go last), or **Shuffle** for random order. Before, the order was Asterisk's.
|
||
- **Reports:** totals now include answered calls, talk time and **outside minutes** (in and out,
|
||
roughly what voip.ms bills), with outside minutes per day, and the **voip.ms balance** of each
|
||
trunk that has the API login.
|
||
- **System → Diagnostics:** checks what usually keeps phones off the network (public IP, DNS,
|
||
local networks, the phone network limit, SIP listening, free audio ports), with how to fix each.
|
||
A **Quick** or **Complete network test** checks the ports from the internet through a network
|
||
test probe you run outside your network; set its URL in Settings → Network. The probe comes as
|
||
a Docker image (`selfphoneng-probe`), and, for a machine without Docker, as a single Linux
|
||
executable (x64 and arm64) attached to each release, with a systemd unit.
|
||
- The call audio port range is configurable: `RTP_PORT_START` and `RTP_PORT_END` (default
|
||
10000–20000).
|
||
- Updating (Docker only): a new version backs up before it changes the database, and stops
|
||
instead if the backup fails. `scripts/update.sh` updates a compose install to a release, checks
|
||
the result and goes back by itself if the check fails. The admin guide's "Updating" section
|
||
covers compose and Portainer.
|
||
- Container logs are capped (3 × 10 MB) in `docker-compose.yml`.
|
||
- Security leftovers from the review (08 §6), all fixed:
|
||
- Asterisk no longer loads the modules that can run host commands (`app_system`, `func_shell`,
|
||
`app_disa`, `res_agi`, `app_externalivr`).
|
||
- Turning two-step sign-in on asks for your password again.
|
||
- `*97`/`*98` voicemail logins: one at a time per phone, 10 an hour.
|
||
- Phone setup files: an unknown MAC gets the same answer as a known one.
|
||
- The login limiter no longer keeps every email ever tried until a restart.
|
||
|
||
## v0.0.2 — 2026-10-21
|
||
|
||
- Fix: calls to a user with Linphone on an iPhone registered dropped at once, for every device of
|
||
that user. Its push parameters hold `&`, which split the dial string.
|
||
|
||
## v0.0.1 — 2026-10-20
|
||
|
||
The first tagged build, for testing. Not for production yet: the v1.0 definition of done
|
||
(docs/spec/09-roadmap.md) still needs a week on a real server with real calls, and the open
|
||
real-account checks.
|
||
|
||
- Phones, users and extensions; calls between desk phones, softphones and the browser phone.
|
||
- voip.ms trunks (registration or IP auth, UDP/TCP/TLS + SRTP), phone numbers, outbound rules
|
||
with calling permissions, 911 with E911 caller ID and alerts.
|
||
- Voicemail with email, digital receptionists, office hours, ring groups, queues, parking,
|
||
pickup, conference rooms, paging and intercom, music on hold.
|
||
- Call history, recordings, the live dashboard (listen, whisper, barge), reports.
|
||
- Desk phone provisioning (Yealink, Grandstream), company phonebook, Linphone setup QR.
|
||
- Security: two-step sign-in for admins, phone network limit, limits on outside calls at once,
|
||
the M11-T8 security review (08 §6); backups and restore; background watches; webhooks and API
|
||
tokens; the admin guide.
|
||
- Not in this release: SMS (parked until wanted), `scripts/update.sh` (before v1.0).
|