Skip to content

Latest commit

 

History

History
425 lines (305 loc) · 22.6 KB

File metadata and controls

425 lines (305 loc) · 22.6 KB

Changelog

All notable changes to EntglDb will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Planned

  • Merkle Trees for efficient sync
  • TLS/SSL support for secure networks
  • Query optimization & indexing improvements
  • Compressed sync protocol
  • Admin UI / monitoring dashboard

2.3.7 (2026-04-24)

2.3.6 (2026-04-17)

Bug Fixes

  • Use string JSON payloads across oplog and stores (13cc7d9)

2.3.5 (2026-04-15)

2.3.4 (2026-04-13)

2.3.3 (2026-04-12)

2.3.2 (2026-04-04)

2.3.1 (2026-04-03)

2.3.0 (2026-03-25)

Features

  • Add peer connection pool and refactor TCP clients (fedc8de)

2.2.0 (2026-03-25)

Features

  • Use async BLite APIs and bump dependencies (aa37e80)

2.1.4 (2026-03-23)

2.1.3 (2026-03-20)

2.1.2 (2026-03-19)

2.1.1 (2026-03-19)

2.1.0 (2026-03-19)

Features

  • ContentHash on DocumentMetadata with canonical JSON normalization (dfa856f)

2.0.1 (2026-03-18)

Bug Fixes

  • P2P sync correctness - CDC serialization, LWW timestamps, deterministic metadata IDs (53514bd)

2.0.0 (2026-03-17)

Features

  • Add dynamic database paths and per-collection tables to SQLite persistence (57b8906)
  • Centralize EntglDbNodeService in Network package with auto-registration (9b7c6be)
  • enhance ASP.NET Core sample, fix EF Core runtime issues, stabilize Sync/Persistence (18813d0)
  • full async read and writes for BLite (e49d44a)
  • Implement automatic synchronization of remote peer configurations (4e7d064)
  • Phase 1 - Core infrastructure for remote cloud nodes (2f2d916)
  • Phase 2 - Discovery and Leader Election (68c7866)
  • Phase 3 - OAuth2 Security Infrastructure (8c6a8e2)
  • Phase 5 - Management API for Remote Peers (8e66710)
  • vector sync and hash-chain OplogEntry (240ca26)
  • persistence: snapshots (05068ff)

Bug Fixes

  • adds cancellation token to async blite mutations (4b87114)
  • adds cancellation token to async blite mutations (914a705)
  • adds support to Set in BLite context (5521e29)
  • corrects hash-chain consistency (84388d8)
  • corrects issue with samples (58d368e)
  • corrects samples (774abe5)
  • corrects the samples (cc8dc82)
  • prevent snapshot infinite loop via boundary convergence check (e10b80a)
  • query limits (d74e689)
  • Use IEntglDbNode interface in EntglDbNodeService for proper dependency inversion (cd7e552)
  • watch only local collections (ef4c345)
  • core: atomic save and last hash update (e9cf4b3)
  • core: makes hashing deterministric (9400c73)
  • network: corrects protocol (464344c)
  • network: imrproves socket read/write for android (1dde9a6)
  • network: resolve critical concurrency and connection issues (eb243a5)
  • sqlite: handle Undefined values in OpLogEntry serialization (b7b2388)
  • sqlite: handle Undefined values in OpLogEntry serialization (c3173eb)

Breaking Changes

  • Develop (#14) (adb6245)
  • bump to v2.0.0 — target netstandard2.1;net10.0 (8a3b727)

[2.0.0] (2026-03-17)

Breaking Changes

  • Target frameworks: rimossi netstandard2.0, net6.0, net8.0; le librerie ora puntano a netstandard2.1;net10.0 (eccetto EntglDb.AspNet e EntglDb.Persistence.EntityFramework che puntano solo a net10.0)
  • Rimossa dipendenza da Microsoft.AspNetCore.Http.Abstractions in EntglDb.AspNet (fornita dal framework in net10.0)

Changed

  • Tutti i pacchetti Microsoft.Extensions.* aggiornati alla 10.0.5
  • Microsoft.EntityFrameworkCore e Microsoft.EntityFrameworkCore.Relational aggiornati alla 10.0.5
  • System.Text.Json e System.Threading.Channels referenziati come pacchetti solo per netstandard2.1 (built-in per net10.0)
  • Progetti di test aggiornati a net10.0; versioni pacchetti di test aggiornate (coverlet.collector 8.0.0, FluentAssertions 8.9.0, Microsoft.NET.Test.Sdk 18.3.0, xunit.runner.visualstudio 3.1.5)

1.1.7 (2026-03-12)

1.1.6 (2026-03-11)

Bug Fixes

  • watch only local collections (ef4c345)

1.1.5 (2026-03-11)

1.1.4 (2026-03-10)

Bug Fixes

  • adds cancellation token to async blite mutations (914a705)

1.1.3 (2026-03-06)

Bug Fixes

  • adds cancellation token to async blite mutations (4b87114)

1.1.2 (2026-03-06)

1.1.1 (2026-03-02)

Bug Fixes

1.1.0 (2026-02-22)

Features

  • full async read and writes for BLite (e49d44a)

1.0.3 (2026-02-19)

1.0.2 (2026-02-19)

1.0.1 (2026-02-18)

Bug Fixes

  • adds support to Set in BLite context (5521e29)

1.0.0 (2026-02-18)

Features

  • Add BLiteDocumentStore abstract base class (7dd5777)
  • Add DocumentMetadataStore for HLC timestamp tracking (26f92d9)
  • Add EfCoreDocumentStore abstract base class (0805cd9)
  • Complete BLite persistence with snapshot support (09bb7c4)

Bug Fixes

  • EfCoreOplogStore now initializes NodeCache correctly (d5da920)
  • OplogStore now uses SnapshotMetadata for VectorClock initialization (ae1b2ac)
  • Remove circular dependency from BLiteDocumentStore (d344889)
  • TcpSyncServer returns entries for all nodes instead of requested node (da869a0)
  • Transaction crash in ApplyBatchAsync for both BLite and EfCore (af48383)
  • Vector Clock always empty - OplogStore cache not updated by CDC (1136604)
  • VectorClock stays empty after Invalidate - _cacheInitialized never reset (2cccb5d)

Breaking Changes

  • update positioning from P2P database to sync middleware (a396b60)

0.9.1 (2026-01-28)

0.9.0 (2026-01-28)

Features

  • enhance ASP.NET Core sample, fix EF Core runtime issues, stabilize Sync/Persistence (18813d0)

0.8.6 (2026-01-27)

Features

Bug Fixes

  • prevent snapshot infinite loop via boundary convergence check (e10b80a)
  • query limits (d74e689)

0.8.5 (2026-01-26)

Bug Fixes

  • core: atomic save and last hash update (e9cf4b3)
  • core: makes hashing deterministric (9400c73)

0.8.0 - 2026-01-20

Added - Phase 2: ASP.NET Server + Persistence Layers

EntglDb.Persistence.EntityFramework Package

  • Generic EF Core Persistence: Full IPeerStore implementation using Entity Framework Core
  • Multi-Database Support: SQL Server, PostgreSQL, MySQL, and SQLite support
  • Entity Classes: DocumentEntity, OplogEntity, RemotePeerEntity with proper indexes
  • EntglDbContext: Configured DbContext with optimized model configuration
  • DI Extensions: AddEntglDbEntityFramework() methods for easy service registration
  • Migration Support: Initial EF Core migrations for all supported databases

EntglDb.Persistence.PostgreSQL Package

  • JSONB Optimization: PostgreSQL-specific DbContext with JSONB column types
  • GIN Indexes: Configured for high-performance JSON queries
  • PostgreSqlPeerStore: Optimized persistence layer extending EfCorePeerStore
  • Connection Resilience: Built-in retry logic and connection pooling
  • Production Ready: Optimized for PostgreSQL 12+ with best practices

EntglDb.AspNet Package

  • Dual Deployment Modes: Single Cluster (production) and Multi Cluster (dev/staging)
  • Configuration Models: ServerMode, SingleClusterOptions, MultiClusterOptions
  • NoOpDiscoveryService: Passive discovery for server scenarios (no UDP broadcast)
  • NoOpSyncOrchestrator: Respond-only sync mode for cloud deployments
  • Health Checks: EntglDbHealthCheck for monitoring and observability
  • Hosted Services: TcpSyncServerHostedService and DiscoveryServiceHostedService
  • OAuth2 Integration: JWT token validation for cloud authentication
  • DI Extensions: AddEntglDbAspNetSingleCluster() and AddEntglDbAspNetMultiCluster()

Documentation

  • docs/deployment-modes.md: Comprehensive guide to Single vs Multi-cluster deployment
  • docs/persistence-providers.md: Detailed comparison of SQLite, EF Core, and PostgreSQL options
  • Package READMEs: Complete documentation for each new package with examples
  • Configuration Examples: JSON configuration samples for both deployment modes

Enhanced

  • Production Infrastructure: Complete cloud deployment stack built on Phase 1 foundations
  • Database Flexibility: Choose the right database for your deployment scenario
  • Hosting Options: Deploy as standalone ASP.NET Core application or container
  • Security: OAuth2 JWT validation integrated throughout the stack

Compatibility

  • Zero Breaking Changes: Full backward compatibility with existing v0.7.x code
  • All Tests Pass: 50/50 tests passing (27 Core + 8 Network + 15 SQLite)
  • Incremental Adoption: Can use new packages alongside existing SQLite persistence

0.6.1 - 2026-01-18

Fixed

  • Serialization: Standardized JSON serialization to use snake_case naming policy for node_id and tcp_port in DiscoveryBeacon to match other platforms.
  • Discovery: Improved interoperability with Android nodes by ensuring consistent payload format.

0.6.0 - 2026-01-16

Added

  • Batch Operations: PutMany and DeleteMany for efficient bulk processing
  • Filtered Count: Count(predicate) support leveraging database-side counting
  • Global Configuration: EntglDbMapper for code-based entity and index configuration
  • Typed Exceptions: DocumentNotFoundException and EntglDbConcurrencyException for robust error handling
  • Delta Sync: FetchUpdatedSince support using HLC Oplog for efficient incremental updates

0.3.1 - 2026-01-15

Added

  • NuGet Package Metadata: Complete metadata for all packages
    • Package-specific README files for Core, Network, and Persistence.Sqlite
    • Package icon (blue-purple mesh network design)
    • Repository and project URLs
    • Enhanced package tags for better discoverability
  • Assets: Professional icon for NuGet packages

Improved

  • Better NuGet package presentation with README visible on NuGet.org
  • More comprehensive package tags for search optimization

0.3.0 - 2026-01-15

Changed

  • Stable Release: First stable release, promoted from 0.2.0-alpha
  • All production hardening features now stable and ready for LAN deployment

Added

  • GitHub Actions workflow for automated NuGet publishing
  • CHANGELOG.md for version tracking

0.2.0-alpha - 2026-01-15

Added - Production Hardening for LAN

  • Configuration System: EntglDbOptions with appsettings.json support for flexible configuration
  • Exception Hierarchy: 6 custom exceptions with error codes (NetworkException, PersistenceException, SyncException, ConfigurationException, DatabaseCorruptionException, TimeoutException)
  • RetryPolicy: Exponential backoff with configurable attempts and transient error detection
  • DocumentCache: LRU cache with statistics (hits, misses, hit rate) for improved performance
  • OfflineQueue: Resilient offline operations queue with configurable size limits
  • SyncStatusTracker: Comprehensive sync monitoring with peer tracking and error history
  • EntglDbHealthCheck: Database and network health monitoring
  • SQLite Resilience: WAL mode verification, integrity checking, and backup functionality

Enhanced

  • SqlitePeerStore: Added logging integration, WAL mode enforcement, integrity checks, and backup methods
  • Sample Application: Updated with production features demo, appsettings.json configuration, and interactive commands (health, cache, backup)

Documentation

  • Production Hardening Guide: Complete implementation guide with examples and best practices
  • LAN Deployment Guide: Platform-specific deployment instructions for Windows, Linux, and macOS
  • README: Comprehensive update with table of contents, architecture diagrams, use cases, and contributing guidelines
  • LAN Disclaimers: Clear positioning as LAN-focused, cross-platform database throughout all documentation

Fixed

  • Sample application startup crash due to directory creation issue

Changed

  • All projects updated to version 0.2.0-alpha
  • Enhanced logging throughout the codebase
  • Improved error handling with structured exceptions

0.1.0-alpha - 2026-01-13

Added - Initial Release

  • Core P2P Database: Lightweight peer-to-peer database for .NET
  • Mesh Networking: Automatic peer discovery via UDP broadcast
  • TCP Synchronization: Reliable data sync between nodes
  • Hybrid Logical Clocks (HLC): Distributed timestamp-based conflict resolution
  • Last-Write-Wins (LWW): Automatic conflict resolution strategy
  • Type-Safe API: Generic Collection with LINQ support
  • SQLite Persistence: Local database storage with Dapper
  • Auto-Generated Keys: Support for [PrimaryKey(AutoGenerate = true)] attribute
  • Indexed Properties: Support for [Indexed] attribute for query optimization
  • Expression-based Queries: LINQ support for filtering (e.g., Find(u => u.Age > 30))
  • Gossip Protocol: Efficient update propagation across the network
  • Anti-Entropy Sync: Automatic reconciliation between peers
  • Offline-First: Full local database, works without network connection
  • Cross-Platform: Runs on Windows, Linux, and macOS (.NET 10)

Documentation

  • Initial README with quick start guide
  • Architecture documentation with HLC and Gossip explanations
  • API reference documentation
  • Sample console application

Tests

  • Unit tests for Core (19 tests)
  • Unit tests for Persistence.Sqlite (13 tests)
  • Unit tests for Network (1 test)