Skip to content

Signal.NET 0.4.0-preview.1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Sep 05:24
· 31 commits to main since this release
00795e1

Milestone 0.4 (richer incoming model). Every change is binary-compatible with 0.3.0-preview.1. New
EnvelopeContent cases raise compiler warnings in exhaustive switches, and a few behaviors changed (see below).

Added

  • Sync messages (roadmap 0.4.1): EnvelopeContent has a new case, SentTranscript, for messages the account sent from its other devices, raising the new MessageSent event. IncomingEnvelope.Conversation is the transcript's destination. Transcripts never run commands. They are delivered only with AccessControl:IgnoreOwnMessages = false, so the default behavior is unchanged.
  • Edits, remote deletes and received stickers (roadmap 0.4.2, 0.4.3, 0.4.4):
    • EnvelopeContent has a new case, EditMessage (edited message's timestamp plus the new version), raising the new MessageEdited event. Edits never run commands.
    • DataMessage.RemoteDelete raises the new MessageDeleted event.
    • DataMessage.Sticker carries received stickers.
  • Stories (roadmap 0.4.5): EnvelopeContent has a new case, StoryMessage (file or text, optional group, AllowsReplies), raising the new StoryReceived event. Opt-in via Receive:IgnoreStories = false.
  • Calls (roadmap 0.4.6): EnvelopeContent has a new case, CallMessage (CallEventKind offer, answer, busy or hangup; CallId; IsVideo for offers), raising the new CallReceived event.
  • Mention-aware binding (roadmap 0.4.7): a positional command argument that is an @mention binds as the mentioned user's phone number (or UUID if hidden), so /kick @Bob works with Recipient, PhoneNumber and AccountId parameters. A placeholder without a matching mention fails with Could not resolve the @mention for <name>. Before, it would have been accepted as a username.
  • Received text styles (roadmap 0.4.8): DataMessage.TextStyles lists the sender's formatting as StyledRange(TextStyle, Start, Length).
  • Group update context (roadmap 0.4.9): GroupUpdated has Name and Revision, and every group message exposes DataMessage.GroupName and GroupRevision. Signal doesn't report what changed; compare revisions or fetch the group to find out.

Changed

  • Receive:IgnoreStories is now enforced in the WebSocket (json-rpc*) modes too. Before, it was only passed to the API when polling.
  • Exhaustive switches over EnvelopeContent now produce a warning until they handle EditMessage, SentTranscript, StoryMessage and CallMessage. This is source-compatible and binary-compatible.
  • Sticker-only messages now raise MessageReceived (they were dropped before). DataMessage.HasContent is true for them, while Text is null.

What's Changed

  • Validate against the 0.3.0-preview.1 baseline by @Nacorpio in #24
  • Model received edits, remote deletes and stickers (0.4.2-0.4.4) by @Nacorpio in #25
  • Model sent transcripts from other devices (0.4.1) by @Nacorpio in #26
  • Bind @mentions and map received text styles (0.4.7, 0.4.8) by @Nacorpio in #27
  • Model received stories and call events (0.4.5, 0.4.6) by @Nacorpio in #28
  • Carry group name and revision on group updates (0.4.9) by @Nacorpio in #29
  • Release v0.4.0-preview.1 by @Nacorpio in #30

Full Changelog: v0.3.0-preview.1...v0.4.0-preview.1