Skip to content

Remove configurable transport and run protocol v2 only in v0.19.0 (revert #785) #786

Description

@grunch

Context

PR #785 makes the inner Mostro protocol version of server-originated messages follow the active wire transport:

transport setting event kind inner version
gift-wrap 1059 (NIP-59) 1
nip44 14 (NIP-44 direct) 2

This is a transitional mechanism, not a permanent design. This issue tracks its lifecycle across the next two releases.

Plan

v0.18.0 — operator opt-in (backwards compatibility)

The node operator keeps the ability to choose the protocol version (v1 or v2) via the transport setting:

  • transport = "gift-wrap" → protocol v1
  • transport = "nip44" → protocol v2

This window exists purely for backwards compatibility with other Mostro clients that have not yet migrated to protocol v2. Operators can stay on v1 while the ecosystem catches up.

v0.19.0 — v2 only (revert PR #785)

  • mostrod runs exclusively on protocol v2, the version indicated by mostro-core (PROTOCOL_VER).
  • The transport/version selection in settings is removed — no more transport knob.
  • The version-stamping logic introduced in PR feat(transport): make inner protocol version follow active transport #785 (stamp_protocol_version in src/util.rs) is reverted, since the inner version once again becomes a constant equal to PROTOCOL_VER with no transport to follow.

Tasks for v0.19.0

  • Revert PR feat(transport): make inner protocol version follow active transport #785 (stamp_protocol_version and the send_dm call site).
  • Remove the transport setting from config (src/config/types.rs, settings.rs, defaults, docs).
  • Default and hardcode the wire format to the protocol-v2 (nip44, kind-14) transport.
  • Update docs/TRANSPORT_V2_SPEC.md and any operator-facing config docs.
  • Communicate the deprecation so client implementers complete their v2 migration before this release.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions