[0.1.9] - 2025-09-28
### Added
- UI to change the display language (english or french, spanish will be supported soon)
- UI to change the theme. Supported theme engines: catppuccin and material m3
(material m3 is the default now)
- UI slider to change the UI scale (pixels per point)
- Support for password-protected nostr keys (new nostr keys mgr)
- Imported keys are password-protected by default
- Peers page: show disconnected peers in a collapsing list
Screenshot of the preferences panel, with the new material m3 theme color picker.

[0.1.9] - 2025-09-28
### Added
- UI to change the display language (english or french, spanish will be supported soon)
- UI to change the theme. Supported theme engines: catppuccin and material m3
(material m3 is the default now)
- UI slider to change the UI scale (pixels per point)
- Support for password-protected nostr keys (new nostr keys mgr)
- Imported keys are password-protected by default
- Peers page: show disconnected peers in a collapsing list
[0.1.8] - 2025-09-26
### Fixed
- Finally fix this annoying issue with handshakes after webrtc disconnections!
Peers will now show up in the peers list no matter what.
- Old signal events will automatically be deleted from nostr relays
### Changed
- NIP44 encryption at the (webrtc) data channel level
- Use nip44 {encrypt,decrypt}_to_bytes() to have an encryption layer
over the webrtc data channel, to enforce encryption for all voistr
protocol messages (instead of using seals)
[0.1.7] - 2025-09-22
### Added
- New dependencies: binrw, mmap2
- New voistr message types: direct message, file send request && response
- Basic UI to send DMs to a contact
- NIP44-encrypted file transfer support over webrtc data channels.
- UI to list file transfers with progress bar
[0.1.7] - 2025-09-22
### Added
- New dependencies: binrw, mmap2
- New voistr message types: direct message, file send request && response
- Basic UI to send DMs to a contact
- NIP44-encrypted file transfer support over webrtc data channels.
- UI to list file transfers with progress bar
[0.1.6] - 2025-09-20
### Added
- NIP-96 uploads support
- UI to display and change the picture in the profile page
- When clicking on a peer, it shows a page with the events history for that peer
(call invites, responses, hangups, ...)
- promising_nostrdb module
### Changed
- Use trait enums for the pages system
[0.1.5] - 2025-09-17
### Added
- Button to restore default webrtc settings in the preferences UI
### Changed
- Use the lazy_async_promise crate to make queries on the nostr database from egui
- Cache db query results with mini_mako
### Fixed
- IdentityState::new() => create the config directory early
[0.1.4] - 2025-09-15
### Added
- UI to modify the ICE servers configuration
### Changed
- Update matchbox_socket_nostr
- Use CPAL + ringbuf for the opus decoder
- Use stereo 48khz by default, with FEC (forward error correction)
## [0.1.3] - 2025-09-14
### Added
- Ringtone library
- Ringtone preferences
- Add a "play_ringtone" function in the audio module to play a ringtone repeatedly with a custom volume
- Refuse call button
voistr (pronounced like: VOYST-er) is an experimental nostr p2p softphone and real-time communication agent. It uses nostr relays to exchange encrypted WebRTC signaling messages.
How it works:
- Peers connect to some nostr relays which accept encrypted NIP-44 events, and send an event to join a room.
- Peers send NIP-44 encrypted events containing the WebRTC offers and ICE candidates. This is the handshake, made possible by the nostr relays which act as WebRTC signaling servers.
- Once the offer is accepted, the WebRTC connection is established. A data channel is opened, as well as media tracks to exchange encoded (OPUS) audio data. The data channel is used for the voistr protocol, which uses NIP-44 seal events with JSON payloads.
Right now there is no relays configuration and to make testing easier, voistr uses a predetermined list of relays that work well with encrypted events.
If you want to try it out and help with the testing, reply here, that'd be much appreciated.
#voistr #nostr #softphone #nosphone #webrtc #opus
### Added
- Phone, preferences and contacts pages
- UI to change the audio device preferences
voistr is a softphone for nostr. It uses nostr relays to exchange encrypted WebRTC signaling messages.
# voistr #softphone #nostr