Skip to content

Releases: zhangfengcdt/prollytree

ProllyTree v0.3.1

29 Aug 15:10
Compare
Choose a tag to compare

What's Changed

  • Add GTH release workflow for rust, python, and github releases by @zhangfengcdt in #99
  • Fix: Prevent reinitialization of existing ProllyTree stores by @zhangfengcdt in #100
  • Expose proof and historical access methods to VersionedKvStore Python API by @zhangfengcdt in #101
  • Add comprehensive type stubs for VersionedKvStore proof and merge functionality by @zhangfengcdt in #102
  • feat: Add get_keys_at_ref method to Python bindings for historical state access by @zhangfengcdt in #103

Full Changelog: v0.3.0...v0.3.1

ProllyTree v0.3.0

12 Aug 01:19
9804a7e
Compare
Choose a tag to compare

What's Changed

  • Roadmap items for version 0.2 by @zhangfengcdt in #44
  • Add benchmarks to measure performance of tree operations by @zhangfengcdt in #48
  • Update thiserror requirement from 1.0 to 2.0 by @dependabot[bot] in #46
  • feat: Add git-like diff and merge examples with professional color output by @zhangfengcdt in #49
  • feat: Add comprehensive Git integration with proper gix API implementation and user documentation by @zhangfengcdt in #50
  • Fix the staging issue with git-prolly by @zhangfengcdt in #51
  • build(deps): Update lru requirement from 0.12 to 0.16 by @dependabot[bot] in #52
  • Fix git-prolly minor issues by @zhangfengcdt in #54
  • Implement / fix git-prolly commands by @zhangfengcdt in #55
  • SQL Command Integration with git-prolly using GlueSQL by @zhangfengcdt in #56
  • Clean up code structure and add pypi to ci build by @zhangfengcdt in #57
  • Versioned Memory Store for AI Agents using ProllyTree and the Rig framework by @zhangfengcdt in #58
  • Add Financial Advisory AI Demo with ProllyTree Integration by @zhangfengcdt in #60
  • Continue implementing finance_advisor examples by @zhangfengcdt in #66
  • Consolidate VersionedKvStore commits to eliminate duplicate metadata commits by @zhangfengcdt in #68
  • Enhance Financial Advisor Branch Management and UI Consistency by @zhangfengcdt in #69
  • Add RocksDB Storage Backend for ProllyTree by @zhangfengcdt in #71
  • Clean up documents and add storage guides by @zhangfengcdt in #72
  • Generic Storage Backend Support for VersionedKvStore by @zhangfengcdt in #73
  • Financial Advisor Enhancements: Branch Visualization, Data Source Tracking, and Debug Mode by @zhangfengcdt in #77
  • Implements a comprehensive agent memory system for support LLM agents by @zhangfengcdt in #78
  • Enhanced Financial Advisor: Comprehensive Agent Memory Integration by @zhangfengcdt in #79
  • Extended the ProllyTree Python API with two major new components by @zhangfengcdt in #80
  • Enhanced Historical Functionality for All Storage Types and Complex Multi-Branch Testing by @zhangfengcdt in #81
  • Add Context Offloading Agent Example with LLM-Based Tool Selection by @zhangfengcdt in #82
  • Implement Thread-Safe Agent Memory System with Multiple Storage Backends by @zhangfengcdt in #84
  • Remove println from production code by @zhangfengcdt in #85
  • Add Complete LangGraph + ProllyTree Integration Example with Persistent Memory Workflow by @zhangfengcdt in #86
  • Expose ProllyTree SQL API to Python and Add Chronological LangGraph TA-RAG Example by @zhangfengcdt in #87
  • Add Python documentation auto-generation with Read the Docs integration by @zhangfengcdt in #88
  • Three-way merge function for prolly trees by @zhangfengcdt in #91
  • feat: Implement Git worktree-like functionality for multi-agent systems by @zhangfengcdt in #90
  • Implement Multi-Agent System with LangGraph Supervisor Pattern and Branch Isolation by @zhangfengcdt in #89
  • feat: Add LangMem integration example with branch-based memory isolation by @zhangfengcdt in #92
  • feat: Add prolly-ui tool for interactive HTML visualization of git-prolly repositories by @zhangfengcdt in #93
  • Improve ProllyTree UI page layout by @zhangfengcdt in #94
  • Improve and fix prollytree UI issues by @zhangfengcdt in #95
  • Fix prolly-ui commit data extraction and improve UI styling by @zhangfengcdt in #96
  • Cleanup for v0.3.0 Release by @zhangfengcdt in #97

Full Changelog: v0.2.1-beta...v0.3.0

ProllyTree v0.2.0

13 Jul 01:26
de56c97
Compare
Choose a tag to compare

📦 ProllyTree v0.2.0 Release Notes

🎯 Overview

This release brings significant improvements to the ProllyTree library with critical bug fixes, new
visualization features, and enhanced encoding capabilities. This version focuses on data integrity,
developer experience, and cryptographic transparency.

✨ New Features

🔍 Proof Visualization System (PR #42)

A revolutionary new feature that makes cryptographic proofs visually accessible and transparent.

What's New:

  • print_proof() method - Combines proof generation with visual tree representation
  • Color-coded proof paths - Green highlighting shows the exact cryptographic verification trail
  • Hash transparency - Displays truncated hash values (first 16 hex chars) for manual verification
  • Interactive debugging - Perfect for understanding Merkle tree concepts and verification workflows

Example Output:
root:
└── *[0, 10] (hash: f70044057107ab51...) ← Green highlighted
├── [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
└── [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24] (hash: 93c4bfe914b636cf...) ← Green
highlighted

Proof for key [10] is valid: true

Use Cases:

  • Educational demonstrations of cryptographic data structures
  • Debugging distributed systems and verification workflows
  • Trust-but-verify scenarios in peer-to-peer networks
  • Development and testing of prolly tree applications

📊 Enhanced Data Encoding (PR #39)

Expanded encoding capabilities for better data interchange and storage efficiency.

New Encoding Support:

  • Parquet encoding - Industry-standard columnar format for analytics
  • Schema-aware serialization - Leverages JSON Schema for type safety
  • Error propagation - Robust error handling without unwrap() calls
  • Test coverage - Order-agnostic tests for reliable validation

🐛 Critical Bug Fixes

🔒 Data Corruption Fix (PR #41)

CRITICAL: Fixed a severe data corruption bug that could cause catastrophic data loss.

Problem:
The split and merged boolean flags in ProllyNode were being persisted through serialization and never reset,
causing:

  • Split nodes having edges incorrectly hoisted to parent on every operation
  • Merged nodes having siblings incorrectly dropped from parent
  • Progressive tree structure corruption over time

Solution:

  • Made flags transient using #[serde(skip)] - no longer serialized
  • Automatic flag reset when nodes are retrieved from storage
  • Comprehensive test coverage to prevent regressions

Impact: This fix prevents data loss and ensures tree integrity across all operations.

⚖️ Improved Tree Balancing (PR #40)

Enhanced the probabilistic balancing algorithm for better tree performance and structure.

Improvements:

  • Refactored balancing logic for more consistent tree shapes
  • Better handling of edge cases during split/merge operations
  • Improved performance characteristics for various data patterns

🧪 Testing & Quality

Comprehensive Test Suite

  • 36 test cases covering all functionality
  • New proof visualization tests with real-world scenarios
  • Data corruption regression tests to prevent future issues
  • Example programs demonstrating features (examples/proof_visualization.rs)
  • Integration tests ensuring compatibility across features

Code Quality

  • All clippy warnings resolved
  • Consistent formatting with rustfmt
  • Enhanced documentation with usage examples
  • Error handling improvements throughout the codebase

🔧 Technical Details

API Additions

// New proof visualization API
impl Tree for ProllyTree {
fn print_proof(&self, key: &[u8]) -> bool;
}

// Enhanced node visualization
impl Node for ProllyNode {
fn print_tree_with_proof(&self, storage: &S, proof: &Proof, target_key: &[u8]);
}

// New encoding support
enum EncodingType {
Json,
Arrow,
Parquet, // ← New!
}

Breaking Changes

None - This release maintains full backward compatibility.

Performance Impact

  • Minimal overhead - New features only activate when explicitly requested
  • Fixed corruption improves long-term performance by maintaining tree integrity
  • Better balancing reduces tree depth for faster operations

📚 Documentation & Examples

New Examples

  • examples/proof_visualization.rs - Complete demonstration of proof visualization
  • Updated main.rs with proof demo integration
  • Enhanced README with new feature documentation

Improved Developer Experience

  • Visual debugging makes complex tree operations understandable
  • Hash transparency enables manual verification workflows
  • Color-coded output (with graceful degradation for non-color terminals)
  • Clear legends explaining symbols and highlighting

🚀 Migration Guide

From v0.1.x to v0.2.1-beta

No breaking changes - simply update your Cargo.toml:

[dependencies]
prollytree = "0.2.0"

Using New Features

use prollytree::tree::{ProllyTree, Tree};

// Create your tree as usual
let mut tree = ProllyTree::new(storage, config);
tree.insert(b"key".to_vec(), b"value".to_vec());

// NEW: Visualize cryptographic proofs!
let is_valid = tree.print_proof(b"key");

🙏 Acknowledgments

Special thanks to the community for:

  • Reporting the critical data corruption issue
  • Requesting proof visualization features
  • Providing feedback on API design
  • Contributing to the testing and validation process

🔮 What's Next

Looking ahead to v0.2.1:

  • Enhanced proof verification APIs
  • Performance optimizations for large trees
  • Additional encoding format support
  • Expanded visualization options