All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Highlights are marked with a pancake 🥞
- Ensure log transactions as atomic #1060
- Define and implement
Forge#1032 - Add
LogStoretrait and SQLite implementation #1004 - Add
TopicStoretrait and SQLite implementation #1011 Ingestprocessor to insert operations and associate them with topic in store #1044as_bytesmethod forBody#1044- Event processing pipeline in Node stream #1045
- Replay all operations for a topic based on offset #1064
- Log-prefix pruning processor #1073
- Process local operations #1080
- Process and aggregate metrics for sync events #1085
- Introduce system event API for Node #1087
- Return error when gossip message exceeds maximum size #1096
- Introduce
Authorand use super-trait inp2panda-core#1104 - Introduce
Cursortype in core to track log heights #1104 CursorStoreto persistCursorstate in SQLite #1104- Re-play events from any cursor, track acked state #1104
- Remove
previousfield fromHeader#1048 - Address book SQLite implementation and refactorings #1007
- Remove in-memory store in
p2panda-store-nextand use SQLite inp2panda-stream-next#1016 - Use
p2panda-store-nextSQLite stores inp2panda-netandp2panda-sync#1022 - Use
Topiceverywhere #1058 - More generic API for ingest & operation validation #1050
- Use
TimestampinHeader#1062 - Node API improvements #1061
- Minor store improvements #1068
- Use Borrow to express required args in ingest #1078
- Use MockInstant for Timestamp when running tests #1081
- Derive log id from topic #1082
- Expose insert_bootstrap on the node API #1125
- Update iroh to v0.98.1 #1131
- Forge result is never
Noneor duplicate #1132 - Update iroh to v0.98.2 #1137
- Fix missing gossip events in sync manager #988
- Enforce strictly growing operations log in backlink validation method #1044
- Fix automatic roll-back of unused, dropped permits #1075
- Race where replay_from misses processing ops #1104
- Race where replay state was determined late #1104
- React to node address changes in mDNS test #1141
0.5.2 - 09/03/2026
0.5.1 - 09/02/2026
- Update iroh to v0.96.1 #978
- Fix Drop impl causing premature gossip unsubscribe #968
- Fix panic on sink closure after error during sync session #972
- Gracefully handle concurrently deleted operations during sync #974
- Cleanup state in gossip unsubscribe handler #973
- Fix bind conflict with unique argument seed #980
- Fix tests: Subscribe to events before topic stream creation #981
0.5.0 - 21/01/2026
- Introduce
Conditionssuper-trait inp2panda-auth#780 - Add
serdederives to all state structs inp2panda-auth#809 p2panda-spaces: data encryption for groups and multiple devices #836 🥞- Added
SerializeandDeserializetop2panda-spaces::Event#868 - Additional test for framed CBOR operation streaming #885
p2panda-netrewrite (tracking issue)- mDNS discovery for iroh endpoint #869
- Simple, incremental backoff logic for random walk #870
- Discovery service connecting address book with iroh #872
- Address book watchers to inform other systems about node info or topic set changes #876
- Trusted transport info #878
- Types, trait and API follow-ups of sync manager integration #879
- Generate NeighborUp events when we join the gossip overlay #882
- Non-blocking manager event streams #883
- Reset backoff when subscribing to topic #888
- Remove transport info when connection attempt failed #889
- Track if node is stale in address book #891
- Hash-based private set intersection for topic discovery #895 🥞
- Improve time-critical tests by using
mock_instant#896 - Re-initiate sync with node if session fails #902
- Fix ordering for events updating our own transport info #904
- Do not report failed connection attempts when own node has limited reachability #905
- Heal gossip overlay after coming up back online #906
- Add missing relay url in user data during mDNS discovery #907
- Allow endpoint to gracefully shut down on drop #908
- Modular API for new
p2panda-net#909 🥞 - Method to configure relay urls in Endpoint builder #948
- Chat example for
p2panda-netusing modular API #929
- One global state object and operation graph for all groups #781
- Handle strong removal edge cases and cycles in nested groups, improve concurrent re-adds #788
- Make
Extensionsnon-optional #811 - Add
subscription()method toSyncManagerwhich returnsStream#873 - Improvements to sync poller actor with tests #877
- Do not overwrite serde errors during deserialization of
Header#886 - Module refactoring and minor API improvements in
p2panda-sync#944
- Enable nonblocking for unbound socket used in mdns discovery #794
- Allow managing multiple long-term pre-keys #830
- Remove uni-streams limit, additional tests for gossip #874
- Do not overwrite serde errors during deserialization of
Header#886 - Handle outdated operations which got processed while being pruned, fix overflow substraction bug #894
- Gossip handles address book for sync topic #942
- Race-condition in add_topic and remove_topic #947
0.4.0 - 07/07/2025
p2panda-auth: decentralised group management and authorization #757 🥞p2panda-encryption: decentralized data- and message encryption for groups #731 🥞- Expose sqlite migrations #744
- Trait definitions for atomic write transactions #755
0.3.1 - 14/04/2025
- Partial ordering algorithm for operations #710
- Update dependencies (including iroh
v0.34.1) #738
- Reset gossip state to rejoin after major interface change #726
- Wait for relay connection initialisation and first direct address #725
- Only decrement the gossip buffer counter if it exists and is greater than zero #722
0.3.0 - 11/03/2025
- Introduce concrete error type for
SqliteStore#698 - Implement SQLite
OperationStore&LogStore#680 - Introduce network system events API #669
- Refactor sync manager to reduce complexity #714
- Expose bootstrap mode setting for network chat example via CLI arg #709
- Expand chat example with relay, mdns and bootstrap options #690
- Remove logging from network tests #693
- Give access to header in
Extension::extractmethod #670 - Update to iroh
v0.31.0#672 - Update to iroh
v0.33.0#707 - Update to Rust Edition 2024 #706
- Deduplicate node addresses in address book #691
- Allow bootstrap peer to already enter topic-discovery overlay without any known peers #688
- Poll logic causing ingest to never resolve #697
- Schedule sync re-attempt after any error occurred #702
0.2.0 - 20/01/2025
- Expose API for setting IPv4 and IPv6 IP and port #663
- Re-export gossip config from iroh-gossip #662
- Introduce offline-first capability for
LocalDiscoverymDNS service #660 - Update to iroh
v0.28.1#661 - Make log sync protocol bidirectional #657
TopicMapreplaced byTopicLogMap#650- Reset sync and gossip state on major network interface change #648
- Remove
Default,SyncandSendfromLogIdsupertrait definition #633
- Fix re-attempt logic for out-of-order buffer in
Ingeststream #666
0.1.0 - 06/12/2024
Version v0.1.0 represents the first release of the new p2panda stack! You can find out more details by reading our blog.