Skip to content

chore: release#14

Merged
eshork merged 2 commits intomainfrom
release-plz-2026-05-01T02-23-42Z
May 1, 2026
Merged

chore: release#14
eshork merged 2 commits intomainfrom
release-plz-2026-05-01T02-23-42Z

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented May 1, 2026

🤖 New release

  • libudx: 1.1.0 -> 1.2.0
  • peeroxide-dht: 1.1.0 -> 1.2.0
  • peeroxide: 1.1.0 -> 1.2.0
  • peeroxide-cli: 0.1.0
Changelog

libudx

1.2.0 - 2026-05-01

Added

  • add peeroxide-cli (#12)

peeroxide-dht

1.2.0 - 2026-04-30

Added

  • DhtHandle::table_id() — returns the node's current routing table ID; useful for server nodes that need to derive their own NodeId after bootstrapping.
  • DhtHandle::server_socket() — returns a shared Arc<UdxSocket> for the primary socket, enabling UDX stream multiplexing by callers.
  • DhtHandle::listen_socket() — returns a shared Arc<UdxSocket> for the socket bound to the advertised port, used for inbound UDX stream connections.
  • PersistentStats struct with records, record_topics, mutables, immutables, and router_entries fields; returned by the new stats() method on node server handles.
  • RoutingTable::rebuild_with_id() — rebuilds the routing table under a new node ID, mirroring the Node.js _updateNetworkState rebuild in dht-rpc.
  • SecretStream::shutdown() — gracefully closes the write half of a secret stream, sending a FIN to the remote peer.
  • PingResponse now includes to (reflexive address as seen by the remote) and closer_nodes (closer nodes returned by the remote's routing table).

Changed

  • Router forward-entry TTL corrected from 30 seconds to 20 minutes, matching the Node.js HyperDHT reference implementation. Entries for running servers (has_server = true) no longer expire via TTL or GC — they persist until the server is explicitly unregistered.
  • Bootstrap ping now uses CMD_FIND_NODE with the local node's table ID as the target, instead of CMD_PING with no target. This causes bootstrap nodes to return closer nodes, accelerating routing table population.
  • Non-ephemeral nodes with a known public address now derive a deterministic node ID from hash(host, port) at spawn time, matching Node.js DHT identity behaviour. Nodes bound to a wildcard address instead collect reflexive address samples during bootstrapping and update their ID once consensus is reached.
  • Announce handler now populates a ForwardEntry in the router for newly-seen peers (when no server entry already exists), so inbound PEER_HANDSHAKE requests can be relayed to recently-announced peers even before they connect.

peeroxide

1.2.0 - 2026-04-30

Added

  • SwarmHandle::dht() — exposes the underlying HyperDhtHandle for low-level DHT operations such as mutable/immutable record storage and manual peer lookup.
  • SwarmHandle::key_pair() — exposes the Ed25519 key pair identifying this swarm node, for use with DHT mutable records or other identity operations.
  • Re-exported HyperDhtHandle, MutablePutResult, MutableGetResult, and ImmutablePutResult from the peeroxide crate root, so callers no longer need to depend on peeroxide-dht directly for common DHT storage types.

Changed

  • Swarm nodes now self-announce under hash(publicKey) during each discovery refresh. This populates ForwardEntry records on the nodes closest to the peer's public key, enabling PEER_HANDSHAKE routing to work correctly — matching the behaviour of the Node.js reference implementation.
  • Server registrations are now cleaned up properly on leave() (when the last server topic is left), on destroy(), and when the swarm handle is dropped. Previously, ForwardEntry records for the local server could persist in the router until TTL expiry.
  • Incoming server connections now reuse the DHT's bound listen socket for the UDX stream, rather than creating a new socket. This ensures streams arrive on the same port that remote peers have on record, fixing connection establishment in NAT environments.
  • Handshake replies no longer echo the client's address back in peer_address; the field is now correctly set to None in the reply, matching the wire protocol.

peeroxide-cli

[0.1.0] - 2026-04-29

Added

  • peeroxide node — run a long-lived DHT bootstrap node with configurable port, host, stats interval, and record limits
  • peeroxide lookup — query the DHT for peers on a topic with --json NDJSON output and --with-data support
  • peeroxide announce — announce presence on a topic with --ping echo responder, --data attachment, --duration limit, and --seed keypair
  • peeroxide ping — diagnose reachability by address, public key, or topic with --connect full handshake, --count/--interval probes, and --json output
  • peeroxide cp send / peeroxide cp recv — streaming file transfer over encrypted P2P connections with atomic writes, progress reporting, --keep-alive, --force, and stdin/stdout support
  • peeroxide deaddrop leave / peeroxide deaddrop pickup — anonymous store-and-forward messaging via DHT mutable records with passphrase encryption, CRC32c integrity, and chunked payloads
  • peeroxide config init — generate a default TOML configuration file
  • TOML configuration system with ~/.config/peeroxide/config.toml, $PEEROXIDE_CONFIG env var, and CLI flag overrides
  • --generate-man <DIR> flag to produce roff man pages with rich descriptions, examples, exit status, and cross-references
  • AIMD adaptive concurrency for deaddrop publish (responds to commit timeouts)
  • SIGINT/SIGTERM graceful shutdown across all long-running commands
  • Comprehensive test suite: 24 unit tests, 9 local integration tests, 4 live network tests

Known Limitations

  • Performance has not been optimized yet, particularly deaddrop throughput. This is an initial release to get something tangible out for people to play with — expect significant speed improvements in future versions.


This PR was generated with release-plz.

@eshork eshork marked this pull request as ready for review May 1, 2026 02:58
@eshork eshork merged commit 1deccb9 into main May 1, 2026
11 of 12 checks passed
@eshork eshork deleted the release-plz-2026-05-01T02-23-42Z branch May 1, 2026 03:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant