Avatar
voistr
fe13392379ac0aebff53aa49b7a56f8d46dda2fdbf7fe9091e13a3471d3a6815
nostr p2p softphone

[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

https://voistr.codeberg.page

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

https://voistr.codeberg.page

[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)

https://voistr.codeberg.page

[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

https://voistr.codeberg.page

[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

https://voistr.codeberg.page

[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

https://voistr.codeberg.page

[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

https://voistr.codeberg.page

[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)

https://voistr.codeberg.page

## [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

https://voistr.codeberg.page

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.

https://voistr.codeberg.page/

#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