Skip to content

Latest commit

 

History

History
215 lines (165 loc) · 14 KB

File metadata and controls

215 lines (165 loc) · 14 KB

Changelog

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 🥞

Added

  • Ensure log transactions as atomic #1060
  • Define and implement Forge #1032
  • Add LogStore trait and SQLite implementation #1004
  • Add TopicStore trait and SQLite implementation #1011
  • Ingest processor to insert operations and associate them with topic in store #1044
  • as_bytes method for Body #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 Author and use super-trait in p2panda-core #1104
  • Introduce Cursor type in core to track log heights #1104
  • CursorStore to persist Cursor state in SQLite #1104
  • Re-play events from any cursor, track acked state #1104

Changed

  • Remove previous field from Header #1048
  • Address book SQLite implementation and refactorings #1007
  • Remove in-memory store in p2panda-store-next and use SQLite in p2panda-stream-next #1016
  • Use p2panda-store-next SQLite stores in p2panda-net and p2panda-sync #1022
  • Use Topic everywhere #1058
  • More generic API for ingest & operation validation #1050
  • Use Timestamp in Header #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 None or duplicate #1132
  • Update iroh to v0.98.2 #1137

Fixed

  • 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

Fixed

  • Fix SQLite store handling of previous hashes #1051
  • Fix missing gossip events in sync manager #988

0.5.1 - 09/02/2026

Changed

  • Update iroh to v0.96.1 #978

Fixed

  • 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

Added

  • Introduce Conditions super-trait in p2panda-auth #780
  • Add serde derives to all state structs in p2panda-auth #809
  • p2panda-spaces: data encryption for groups and multiple devices #836 🥞
  • Added Serialize and Deserialize to p2panda-spaces::Event #868
  • Additional test for framed CBOR operation streaming #885
  • p2panda-net rewrite (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-net using modular API #929

Changed

  • 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 Extensions non-optional #811
  • Add subscription() method to SyncManager which returns Stream #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

Fixed

  • 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

Added

  • 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

Added

  • Partial ordering algorithm for operations #710

Changed

  • Update dependencies (including iroh v0.34.1) #738

Fixed

  • 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

Added

  • Introduce concrete error type for SqliteStore #698
  • Implement SQLite OperationStore & LogStore #680
  • Introduce network system events API #669

Changed

  • 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::extract method #670
  • Update to iroh v0.31.0 #672
  • Update to iroh v0.33.0 #707
  • Update to Rust Edition 2024 #706

Fixed

  • 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

Changed

  • Expose API for setting IPv4 and IPv6 IP and port #663
  • Re-export gossip config from iroh-gossip #662
  • Introduce offline-first capability for LocalDiscovery mDNS service #660
  • Update to iroh v0.28.1 #661
  • Make log sync protocol bidirectional #657
  • TopicMap replaced by TopicLogMap #650
  • Reset sync and gossip state on major network interface change #648
  • Remove Default, Sync and Send from LogId supertrait definition #633

Fixed

  • Fix re-attempt logic for out-of-order buffer in Ingest stream #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.