github sockudo/sockudo v4.4.0
Sockudo v4.4.0

5 hours ago

Sockudo 4.4.0 is a feature release focused on Protocol V2 collaboration state and more durable transport options. The headline addition is message annotations: reactions, read receipts, moderation flags, counters, and other derived message state can now live beside Sockudo's versioned durable messages instead of being modeled as separate application events.

Highlights

Protocol V2 message annotations

Release 4.4 adds a Sockudo-native annotation engine for existing versioned messages.

  • Summary-first updates through message.summary payloads.
  • Raw annotation streams for audit and custom reducers through ANNOTATION_SUBSCRIBE.
  • Signed HTTP APIs to publish, delete, and list annotations:
    • POST /apps/{appId}/channels/{channelName}/messages/{messageSerial}/annotations
    • DELETE /apps/{appId}/channels/{channelName}/messages/{messageSerial}/annotations/{annotationSerial}
    • GET /apps/{appId}/channels/{channelName}/messages/{messageSerial}/annotations
  • Built-in summarizers for common realtime UX:
    • total.v1 for simple counters.
    • flag.v1 for one active contribution per identified client.
    • distinct.v1 for reaction sets where a user can hold multiple named values.
    • unique.v1 for one-choice reactions or statuses.
    • multiple.v1 for weighted or repeated moderation-style counts.
  • Channel policy gates through annotations_enabled so operators can opt in by app or namespace.

Annotations are Protocol V2 only. Pusher-compatible V1 clients continue to receive the existing V1 wire shape and do not receive annotation summaries or raw annotation events.

Cluster-aware annotation state

Annotation summaries are materialized from retained annotation events and are designed for multi-node Sockudo deployments.

  • Annotation serials follow the same globally ordered model as mutable messages.
  • Summary projections use a last_annotation_serial watermark.
  • Cold or stale projections can be rebuilt from the authoritative annotation event log.
  • Summary fanout uses the normal channel broadcast path so subscribers on other nodes receive updates.

Apache Iggy adapter and queue driver

Sockudo 4.4 adds Apache Iggy as another durable transport option for horizontal deployments.

  • New iggy feature flag.
  • Adapter and queue driver support.
  • Configuration support for iggy:// connection strings, consumer names, and partition counts.
  • Multinode validation and operational documentation for broker partition semantics and lifecycle handling.

Operator visibility

This release adds observability for annotation volume, delivery, clipping, and projection rebuild behavior.

Prometheus metrics include:

  • sockudo_annotations_published_total{channel,type}
  • sockudo_annotations_deleted_total{channel,type}
  • sockudo_annotation_summary_deliveries_total{channel}
  • sockudo_annotation_summary_clipped_total{channel,type}
  • sockudo_annotation_projection_rebuild_total{channel}
  • sockudo_annotation_projection_rebuild_duration_seconds{channel}

High-signal logs were added for clipped summaries, hot-channel projection rebuilds, and failed annotation fanout.

Configuration

Message annotations require versioned messages and explicit annotation enablement:

[versioned_messages]
enabled = true

[annotations]
enabled = true

[[app_manager.array.apps.policy.channels.channel_namespaces]]
name = "chat"
channel_name_pattern = "^chat:[A-Za-z0-9._-]+$"
annotations_enabled = true

Enabling annotations for a channel implies retained message state for that channel because summaries are derived from stored annotation and message state. Plan retention and storage accordingly.

For Apache Iggy deployments, enable the iggy feature and configure the adapter or queue driver with the Iggy connection settings documented in the server configuration docs.

Install

cargo-binstall

cargo binstall sockudo --version 4.4.0

cargo

cargo install sockudo --version 4.4.0

Docker

docker pull ghcr.io/sockudo/sockudo:4.4.0
docker pull sockudo/sockudo:4.4.0

Direct binary downloads are attached below for Linux, macOS, and Windows.

Platform Support

  • Linux x86_64 GNU
  • Linux x86_64 musl
  • Linux ARM64 GNU
  • Linux ARM64 musl
  • macOS x86_64 Intel
  • macOS ARM64 Apple Silicon
  • Windows x86_64
  • Docker linux/amd64
  • Docker linux/arm64

Compatibility Notes

  • Protocol V1 remains Pusher compatible.
  • Message annotations are Sockudo Protocol V2 only.
  • Raw annotation events are opt-in with ANNOTATION_SUBSCRIBE; normal subscribers receive summary updates.
  • Clients should treat annotation summaries as replace-by-type state. They should not rely on seeing every intermediate summary snapshot.
  • Browser and mobile clients should use a trusted backend proxy for annotation HTTP operations; app secrets must stay server-side.

What's Changed

New Contributors

Full changelog: v4.3.1...v4.4.0

Don't miss a new sockudo release

NewReleases is sending notifications on new releases.