CHANGELOG.md

# Changelog

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

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Added
- Initial release of `ex_esdb_dashboard` as a separate package
- Real-time cluster dashboard with Phoenix LiveView
- `ExESDBDashboard` main module for cluster data aggregation
- `ExESDBDashboard.ClusterLive` - Main dashboard LiveView component
- `ExESDBDashboard.ClusterStatus` - Embeddable cluster status widget
- Real-time updates via Phoenix PubSub integration
- Cluster health monitoring and visualization
- Node status tracking and display
- Event store statistics and monitoring
- Stream count and subscription monitoring
- Responsive dashboard UI components
- Automatic refresh capabilities with manual refresh option
- Support for both secure and unsecured message handling
- Integration with ExESDBGater structured messaging system

### Dependencies
- Phoenix LiveView (~> 1.0)
- Phoenix HTML (~> 4.0)
- ExESDBGater (~> 0.5.0) for core cluster functionality
- Jason (~> 1.0) for JSON encoding/decoding

### Features
- **Real-time Dashboard**: Live updates of cluster state via PubSub
- **Cluster Health**: Visual health indicators with emoji and status text
- **Node Monitoring**: Track connected nodes, uptime, and node types
- **Store Statistics**: Monitor event stores, streams, and subscriptions  
- **Embeddable Components**: Standalone widgets for integration into existing Phoenix apps
- **Responsive Design**: Works on desktop and mobile interfaces
- **Message Validation**: Secure message handling with signature validation
- **Legacy Support**: Backward compatibility with existing message formats

### Technical Notes
- Extracted from `ex_esdb_gater` v0.4.x dashboard modules
- Renamed from `ExESDBGater.Dashboard.*` to `ExESDBDashboard.*`
- Removed conditional compilation guards (Phoenix LiveView now explicit dependency)
- Clean separation of concerns between core logic and UI components
- Maintains compatibility with existing ExESDBGater clusters

### Migration Notes
If migrating from `ex_esdb_gater` v0.4.x dashboard:
1. Replace `{:ex_esdb_gater, "~> 0.4.0"}` with separate dependencies:
   - `{:ex_esdb_gater, "~> 0.5.0"}`  
   - `{:ex_esdb_dashboard, "~> 0.1.0"}`
2. Update module references:
   - `ExESDBGater.Dashboard` → `ExESDBDashboard`
   - `ExESDBGater.Dashboard.ClusterLive` → `ExESDBDashboard.ClusterLive`
   - `ExESDBGater.Dashboard.ClusterStatus` → `ExESDBDashboard.ClusterStatus`
3. Update function calls:
   - `ExESDBGater.Dashboard.get_cluster_data()` → `ExESDBDashboard.get_cluster_data()`

[Unreleased]: https://github.com/beam-campus/ex-esdb-dashboard/compare/HEAD...HEAD