Release Notes
What changed in each NeuraPBX server release. Your dashboard's update check links here; download the current release on the download page.
1.0.6: September 16, 2026 feature release
The healthcare module, FreeSWITCH 1.11.3 and the macOS front-desk app. Download from the download page; existing installs run the updater with the image archive from the bundle. As with 1.0.5, the ARM64 build was produced and boot-tested under emulation only; treat it as new on real hardware.
- Healthcare module. A ward-and-bed model beside the hotel one: wards, beds
and admissions, with bed phones that get their own class of service and privacy setting.
Nurse call from any bed phone (
*61, cleared with*62) with a live board and escalation when nobody clears it; code calls (*63and a digit) announced over a paging group and acknowledged with*63*; on-call rosters with positions and escalation (*64and the service code rings whoever is on now, then the next position, then the fallback) and a check that flags hours with nobody rostered; a department directory; a Care page with the emergency board and a shift handover; ward clerk and nurse roles. It is a telephone system feature set, not a certified nurse-call system. - The voice agent, for more than hotels. Who the agent says it is is now a setting, with hotel, hospital-or-clinic and general-business presets. In care mode it speaks of the nurse station, never tells any caller whether a person is a patient, connects outside callers to a department or the ward, and lets a patient on a bed phone ask for a nurse, leave a message for the station or stop calls reaching the bed. When the local model describes an action instead of taking it, the system takes the action anyway, and a sentence that names an internal tool is never spoken aloud.
- FreeSWITCH 1.11.3. Both architectures now install the same pinned release from SignalWire’s packages through one recipe. The dialplan is reloaded the moment the API connects, so a fresh install answers calls without a restart.
- Front-desk application for macOS (Apple Silicon). The hotel desk app is on the download page as a disk image and as a zip, beside the Windows build. It is ad-hoc signed, so macOS asks once before the first launch.
1.0.5: September 6, 2026 feature release
The AI voice agent and the hotel module. Both builds are on the download page; existing installs can run the updater. The ARM64 build was produced and boot-tested under emulation; treat it as new on real hardware.
- An AI voice agent that acts on the call. Dial its extension, or route an IVR option or inbound route to it, and it holds the conversation itself: it looks up a hotel guest’s stay and bill, sets, changes or cancels their wake-up call, sends a request to housekeeping, takes a message for the desk, turns do-not-disturb on or off, or transfers to a person. Callers can interrupt it. It tells callers it is automated before anything else, every action is confined to the caller’s own room, and nothing it can do moves money. Fully local: faster-whisper, a local language model and Piper voices, no audio leaves the server. A Voice Agent tab under AI Features holds the extension, greeting, disclosure, the facts it may state and the fallback destination.
- Hotel management, second wave. Desk operations and operator accounts with desk-only privileges, a Windows front-desk application, call billing with tariffs and a credit limit, minibar postings, suites, room moves that carry the folio and wake-ups, recurring and group wake-ups, emergency alerts to the desk, guest privacy, and HMAC-signed PMS webhooks. Requires the Business plan.
- Voice quality. Piper’s higher-quality voice ships by default and the voice is a setting. The closed AI image and the open one now ship the same voices.
- Security. The internal service credential no longer travels in any URL: the AI service’s calls and the dialplan’s both carry it as a header, the URL form is refused, and it is no longer written into the generated dialplan files on the shared config volume.
- Windows installs. The firewall rule now follows the published RTP media range. The previous fixed rule left the upper half of the range blocked, which showed up as missing audio on roughly half of calls and looked like a flaky network.
- Release engineering. Images are built from the committed tree, and the FreeSWITCH image purges every generated file, including the one that carried the internal secret, so a developer’s live state can no longer ride into a customer image.
1.0.4: September 1, 2026 reliability & integrity
Upgrade if you take calls from a SIP trunk. This release fixes a fault that could stop every inbound call from reaching your extensions while leaving registrations, outbound calls and the dashboard working normally — so it looked like a carrier problem rather than a PBX one. It also makes the bundle’s own integrity check actually run, and puts dashboard timestamps in your local time.
- Inbound trunk calls could be dropped before the PBX ever saw them. With no
public address configured, FreeSWITCH fell back to STUN discovery and bound the trunk SIP
profile to whatever port your router’s NAT happened to assign — not the 5080 the
stack publishes and your carrier sends to. Calls then arrived at a closed port and were
discarded silently, with nothing in the call logs, because there was no call to log.
Setting the address afterwards did not help either: startup only filled in a first-run
placeholder, so on an install that had already run once the value never changed. Both are
fixed, and the container now says plainly at startup when no public address is set and what
it will cost you. Set
NEURAPBX_PUBLIC_IPin your.envif you have trunks. - The dashboard showed times in UTC, not yours. Call logs, the AI call list, campaign rows and their results, device last-provisioned times and the user portal’s call history all rendered server timestamps as though they were local, so every time was shifted by your offset from UTC and an evening call could appear under the wrong day.
- The release bundle’s checksum was never actually being checked.
Bundles ship a
SHA256SUMSnext to the images archive, and the updater is meant to verify it before loading anything. The file was written with a Windows line ending, which made the lookup quietly return nothing — so the updater reported no checksum present and loaded a 3 GB image archive unverified. Fixed in the builder and in the updater, so an older bundle verifies too. - A DID can now be pointed at an AI IVR. The database, its migration and the dialplan generator all supported it already; only the API that creates inbound routes rejected the type, so the destination could never actually be selected.
1.0.3: August 28, 2026 security release
All installs should upgrade. This release closes an authorization hole that let one softphone password read every call recording on the system, stops an inbound call from being able to take the dashboard API down, and fixes call recording, which never started for the extension being called.
- AI and transcript authorization.
/api/aiwas mounted behind a licence check, not an authorization one, so any authenticated caller — including a token issued by extension login — could transcribe and read back any recording on the system. That walked around the supervisor gate protecting/api/recordings, which guards the same audio. The dashboard, telephony topology, per-extension forwarding destinations and the omnichannel webhook were open to the same principal and are now gated too. - An inbound call could stop the dashboard. The API had no process-level error handling of any kind. Push notifications, webhooks and AI feature handlers run detached on the call path, and on Node 20 one unhandled rejection ends the process — so a failed push notification could take the API down mid-call, with the reason recorded nowhere. Handlers are installed, detached work is caught, and the API now reports a real health state instead of always answering “ok”.
- Call recording never started for the extension being called. Recording is flagged by a directory variable, and FreeSWITCH applies those to the callee leg only after the call is answered — so the check that starts recording could never see it. Recording an extension that placed a call worked; recording one that received a call silently did nothing, with no file, no entry and no error. Recordings also no longer attach themselves to a fabricated call record when the link to the original call is lost.
- Sessions now end when a password changes. A password change or an admin reset left every existing session valid for the rest of its 24-hour life — including the one whose password had just been changed because it was compromised.
- Dashboard sign-in. The brute-force lockout was keyed on an address the client could choose. Behind the bundled reverse proxy that was safe, but the API port is published directly by default, and a request arriving there could set its own forwarded-for header — giving an attacker an unlimited supply of fresh buckets, so the lockout never fired. The live-call WebSocket also checked only that a token was signed by us, never whether the session behind it was still valid, so a revoked session kept receiving call events; and any connected client could subscribe to any feed.
- Stored SIP passwords could be silently blanked. If the encryption key
in
.envdid not match the one the passwords were saved with, decryption returned an empty string and the generated FreeSWITCH configuration was written with empty passwords — which in a SIP directory does not mean “no access”, it means the account registers without one. That now fails closed and says so loudly. If your key has drifted, 1.0.3 will start reporting it where 1.0.2 said nothing; restore the originalCREDENTIAL_KEYfrom your.envbackup, or re-enter the affected passwords. - Encrypted media. SRTP is now offered to every endpoint that supports
it. Plain desk phones are unaffected and need no reconfiguration; set
NEURAPBX_SRTP=requiredto refuse unencrypted media once a fleet has migrated. - Telephony hardening. An HTTP command endpoint carrying FreeSWITCH's
published default credentials is no longer reachable inside the container network.
*72call forwarding is capped in length and refuses international destinations unless explicitly allowed — forwarding to a mobile still works. SIP authentication failures are logged again, which is what the intrusion-ban worker reads. An emergency route whose trunk has been deleted or deactivated now reports itself instead of failing silently. - Installers and upgrades.
.envis created with owner-only permissions and generated passwords no longer reach installer logs. The image archive is checksummed and verified before it is loaded. An interrupted update no longer leaves the containers and.envdisagreeing about the version. Recordings now honour the retention period the settings screen has always offered. - Fixes. Recording download, database backup, table export and both voicemail players work again — all four were silently unauthenticated and returned nothing. Updates no longer skip the AI container. Fresh installs no longer ship a default administrator password that the API itself rejects.
Upgrading. Existing installs keep their data,
credentials and licence. Run update.sh or update.ps1 from your
install directory, or download the bundle below and follow UPDATING.txt.
Keep a copy of your .env somewhere safe — the encryption key in it is
what makes stored SIP passwords readable, and an install running with the wrong one will
now say so loudly instead of silently blanking them.
1.0.2: August 25, 2026 security release
All installs should upgrade, and cloud-hosted installs should upgrade first. This release closes an authorization hole in the extensions API, makes encrypted SIP and WebSocket transports work for the first time on x86, and stops a shared certificate and an over-broad trunk allow-list from being inherited by every install.
- Extensions API authorization.
/api/extensionsaccepted any authenticated caller, including a softphone token issued by extension login. A leaked extension password therefore granted read, create, re-password and delete over the whole telephony configuration rather than control of one line. All four now require an administrator or an explicitextensionspermission. - Extension secrets. Bulk-created extensions defaulted their SIP secret to the extension number, so extension 2001 could be registered with the password “2001”. Secrets are now generated with 144 bits of entropy and shown once, and bulk creation reports what it created rather than returning a secret it never stored.
- Encrypted transports. SIP-TLS on 5061 and secure WebSocket on 7443 are published and working. On x86 the TLS listeners could not start at all in earlier builds: the certificate check depended on a tool the image did not contain, so it failed silently and both ports stayed closed. Plain SIP on 5060 keeps working, so existing desk phones are unaffected until you choose to move them.
- Per-install certificates. Earlier images carried one certificate and
private key shared by every install that ran them. Each install now generates its own on
first start, and an upgrade retires the shared one automatically. It is self-signed —
it encrypts, but hardware phones will not trust it until you supply a real certificate via
NEURAPBX_TLS_CERTandNEURAPBX_TLS_KEY. - Deployment profiles.
NEURAPBX_PROFILEnow distinguishes on-premise from cloud. On-premise keeps trusting the server’s own subnet, which is what lets an on-site ATA or gateway work with no configuration. On a public VM that subnet belongs to the hosting provider and is shared with strangers, so the cloud profile trusts only the carrier ranges you list, and binds the dashboard API to localhost behind the reverse proxy. - Fixes. A static public IP set through
NEURAPBX_PUBLIC_IPnow reaches the SIP stack on x86, where it was previously ignored and every install stayed on STUN — the setting exists for networks where STUN is blocked or answers wrongly. The mobile app is no longer told to use a transport the server does not publish. The login screen no longer pre-fills placeholder text into its fields.
Upgrading. Existing installs keep their data,
credentials and licence. Run update.sh or update.ps1 from your
install directory, or download the bundle below and follow
UPDATING.txt. Your .env is preserved — keep a copy of it
somewhere safe, as the encryption key in it is what makes stored SIP passwords readable.
1.0.1: August 6, 2026 security release
All installs should upgrade. This release hardens the shipped bundle and fixes real-call issues found in field testing.
- Security: bundles now ship with no pre-set credentials of any kind. SIP directory, ESL and trunk configuration are all generated per-install by the setup wizard, and the server refuses to start with weak or missing secrets.
- Telephony: callers now hear ringback on outbound trunk calls and on inbound calls to ringing extensions; trunk credential and host changes apply immediately instead of after a restart; the live-calls panel shows one row per call instead of one per leg.
- AI: the Natural-Language IVR is now a selectable inbound-route destination and routes real speech; compliance scanning redacts card numbers and IDs from stored transcripts and reports findings in a dashboard panel; outbound campaigns speak their message after the voicemail beep, collect keypad responses, and show per-run results; talk analytics are stored and browsable; recording noise reduction now actually runs.
- Desk phones: auto-provisioning generates the correct config format per vendor (Yealink, Grandstream, Polycom, Snom, Cisco SPA/MPP, Fanvil) and the dashboard shows the exact URL each vendor's phone requests.
- Softphones: the macOS softphone now plays incoming call audio (a playback-device initialisation bug fixed in the bundled downloads); diagnostics are written to a log file for support.
- ARM64: the Apple Silicon / ARM-server bundle is rebuilt and current with this release. Previously it lagged at 1.0.0.
- Docs: the User Manual is regenerated to match this release, including per-vendor provisioning status and corrected dashboard address.
1.0.0: July 23, 2026
Initial public release: the full self-hosted PBX (extensions, IVR, queues, ring groups, conferences, voicemail, recording, provisioning, multi-tenant) with the AI engine (transcription, summaries, agent copilot, spam screening and the rest) running on your choice of cloud or fully local models.
Dates use the release build date. The x86 bundle updates in place with update/update.sh / update\update.ps1 from the bundle, or download the current archive from the download page. The ARM64 bundle is also 1.0.4, built on Apple Silicon and at parity with x86. Every earlier archive — 1.0.0, 1.0.1 and 1.0.2, both architectures — has been removed from the bucket. They predate the fixes described above and should not be reused; if you are still running one, upgrade rather than reinstalling it.