Releases: Rightbracket/peeroxide
peeroxide-v1.3.1
Other
- peeroxide-cli 0.2.0: chat subsystem, init command, dd v2 tree protocol, progress UX (#15)
Changed
- Bumped
peeroxide-dhtdependency from 1.2.0 to 1.3.0. This update adds new public wire-byte counter accessors toHyperDhtHandleandDhtHandle. Seepeeroxide-dht/CHANGELOG.mdfor the full list of new additive symbols.
peeroxide-v1.3.0
Other
- peeroxide-cli 0.2.0: chat subsystem, init command, dd v2 tree protocol, progress UX (#15)
Changed
- Bumped
peeroxide-dhtdependency from 1.2.0 to 1.3.0. This update adds new public wire-byte counter accessors toHyperDhtHandleandDhtHandle. Seepeeroxide-dht/CHANGELOG.mdfor the full list of new additive symbols.
peeroxide-dht-v1.3.1
Added
WireCountersstruct — provides atomic, shareable counters for tracking total bytes sent and received. Includesnew()for initialization andsnapshot()for retrieving current totals.Io::wirefield — public access to the IO layer'sWireCounters.Io::wire_counters()— returns a handle to the IO layer's wire byte counters.DhtHandle::wire_stats()— returns a snapshot of cumulative wire bytes(sent, received)for the DHT node.DhtHandle::wire_counters()— returns a handle to the node-wideWireCounters.HyperDhtHandle::wire_stats()— returns a snapshot of total wire bytes processed by the DHT.HyperDhtHandle::wire_counters()— returns a handle to the shared wire byte counters for the running instance.
peeroxide-dht-v1.3.0
Added
WireCountersstruct — provides atomic, shareable counters for tracking total bytes sent and received. Includesnew()for initialization andsnapshot()for retrieving current totals.Io::wirefield — public access to the IO layer'sWireCounters.Io::wire_counters()— returns a handle to the IO layer's wire byte counters.DhtHandle::wire_stats()— returns a snapshot of cumulative wire bytes(sent, received)for the DHT node.DhtHandle::wire_counters()— returns a handle to the node-wideWireCounters.HyperDhtHandle::wire_stats()— returns a snapshot of total wire bytes processed by the DHT.HyperDhtHandle::wire_counters()— returns a handle to the shared wire byte counters for the running instance.
peeroxide-cli-v0.2.1
Other
- CI release automation fix
peeroxide-cli-v0.2.0
Added
-
peeroxide chat— pseudonymous end-to-end-encrypted P2P chat over the DHT. Subcommands:join,dm,inbox,whoami,profiles {list, create, delete},friends {list, add, remove, refresh},nexus. Public channels by name, private channels via--group <salt>or--keyfile; DMs derived from both participants' identity pubkeys plus an ECDH-augmented message key. Interactive TUI with a pinned status bar, multi-line input, slash commands, and a background inbox monitor; line mode is selected automatically when either stdio side is piped. Full reference and protocol spec:docs/src/chat/. -
peeroxide init— config bootstrap (default mode) and man-page installation (--man-pages [PATH]). New flags:--force,--update,--public,--bootstrap <ADDR>(repeatable),--man-pages [PATH]. -
Tree-indexed
ddprotocol v2 shipped under wire byte0x02. Receiver fetches the index tree breadth-first in parallel. Soft depth cap of 4 supports up to ~27 GB at the default 998-byte chunk size. -
dd putanddd getnow display a progress bar by default when stderr is a TTY (indicatif-driven). New flags:--no-progress— suppress the progress bar--json— emit structuredstart/progress/result/ack/doneevents as JSON Lines on stdout (schema documented indocs/src/dd/operations.md)
dd get --jsonrequires--output FILE; without it, flag parsing fails with a clear error (stdout would otherwise conflict with the JSON event stream). -
ddprogress display includes cumulative DHT wire bytes (sent / received) via the newpeeroxide-dht1.3.0HyperDhtHandle::wire_stats()/wire_counters()API (additive — seepeeroxide-dht/CHANGELOG.mdfor the full new symbol set). Shown in the bar, periodic log, and JSON events. -
New global
-v/--verbosecount flag (warn / info / debug;RUST_LOGoverrides). -
New global
--no-publicflag that excludes the default public HyperDHT bootstrap nodes. -
Per-
mutable_puttimeout of 30 seconds in theddv2 sender. Stall watchdog kicks AIMD concurrency off the floor if no put resolves for 30 seconds. -
peeroxide-init(1)andpeeroxide-chat(1)man pages. -
New mdBook chapters:
docs/src/chat/(overview, user-guide, interactive-tui, wire-format, protocol, reference),docs/src/init/overview.md,docs/src/concepts/dht-primitives.md(coversimmutable_put/mutable_put/announce/lookup, rendezvous pattern, TTL, and 1002-byte size budget). -
docs/ascii_art.txtbanner asset embedded intopeeroxide --versionvia claplong_version, into the crate README, and into the mdBook introduction.-Vcontinues to print the bare semver for scripts. -
Prebuilt
peeroxidebinaries distributed via therightbracket/peeroxideHomebrew tap for macOS (universal Apple Silicon + Intel), Linux x86_64 (glibc), and Linux aarch64 (glibc). No Rust toolchain required;brew install rightbracket/peeroxide/peeroxideauto-taps and installs.
Changed
- Renamed
deaddropcommand todd(short for "Dead Drop"). - Renamed
deaddrop leavesubcommand todd put. - Renamed
deaddrop pickupsubcommand todd get. dd putdefaults to v2 protocol; pass--v1to force the legacy single-chain protocol.dd getauto-dispatches between v1 (0x01) and v2 (0x02) based on the root record's first byte.- Bootstrap resolution: CLI
--bootstrapoverrides the config file'snetwork.bootstrap(not additive). After base-list selection,--publicadds defaults, an empty list auto-fills with defaults, and--no-publicremoves defaults. - The legacy per-chunk status output emitted to stderr during the initial publish/fetch phase (
published chunk N/M,fetched data N/M,reassembled X bytes, etc.) is replaced by the new progress UI (bar, periodic log, or JSON events). Scripts that parsed this output should migrate to--jsonmode.
Preserved: Refresh, ack ([ack] pickup #N detected), "ack sent", "done", "written to PATH", and other lifecycle messages on stderr are not affected and continue to print as before. - In
--jsonmode, all structured events (including the pickup key fordd put) go to stdout (perdocs/AGENTS.mdconvention). The pickup key is delivered as{"type":"result","pickup_key":"..."}rather than a bare stdout line. JSON consumers should parse{"type":"result"}events. - Consolidated
peeroxide chatman pages into a singlepeeroxide-chat(1)covering every subcommand and group. Total man-page count is 9 (one per top-level command). - All man pages have refreshed long-about prose, examples, exit status, and see-also entries.
- Rewritten
docs/src/dd/chapters covering both v1 and v2.
Fixed
- Shared sticky
Shutdownprimitive acrossdd put. First SIGINT/SIGTERM cancels gracefully; second exits with code 130. ddv2 need-list watcher now publishes only attempted-and-failed chunk ranges, not all missing positions.
Removed
peeroxide config init— replaced bypeeroxide init.- The legacy
--generate-man <DIR>flag — replaced bypeeroxide init --man-pages [PATH]. - The legacy
--firewalledglobal flag — replaced by--no-public.
libudx-v1.3.1
Other
- release (#20)
libudx-v1.3.0
Changed
UdxSocketis now a cheap-cloneArchandle (UdxSocketInnerholds all state internally). All clones share the same underlying socket; the recv loop is only torn down when the last clone is dropped.UdxSocket::close(self)consuming signature is unchanged. (#12)
peeroxide-cli-v0.1.0
peeroxide-cli 0.1.0
peeroxide-v1.2.0
Added
SwarmHandle::dht()— exposes the underlyingHyperDhtHandlefor 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, andImmutablePutResultfrom thepeeroxidecrate root, so callers no longer need to depend onpeeroxide-dhtdirectly for common DHT storage types.
Changed
- Swarm nodes now self-announce under
hash(publicKey)during each discovery refresh. This populatesForwardEntryrecords on the nodes closest to the peer's public key, enablingPEER_HANDSHAKErouting 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), ondestroy(), and when the swarm handle is dropped. Previously,ForwardEntryrecords 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 toNonein the reply, matching the wire protocol.