|
| 1 | +# dbarena v0.3.0 Release Notes |
| 2 | + |
| 3 | +**Release Date:** January 25, 2026 |
| 4 | +**Codename:** Performance, Snapshots, and Volumes |
| 5 | + |
| 6 | +## 🎉 Overview |
| 7 | + |
| 8 | +dbarena v0.3.0 introduces three major feature sets that significantly enhance database container management: real-time performance monitoring with an interactive TUI, container snapshots for state preservation, and comprehensive volume management for data persistence. |
| 9 | + |
| 10 | +This release adds 3,444 lines of new code across 30 files while maintaining 100% backwards compatibility with v0.2.1. |
| 11 | + |
| 12 | +## ✨ New Features |
| 13 | + |
| 14 | +### 1. Performance Monitoring 📊 |
| 15 | + |
| 16 | +Real-time container metrics collection and visualization powered by Docker stats API. |
| 17 | + |
| 18 | +**Features:** |
| 19 | +- **Real-time metrics collection**: CPU, memory, network I/O, and block I/O |
| 20 | +- **Interactive TUI**: Beautiful terminal UI with charts, gauges, and live updates (powered by Ratatui) |
| 21 | +- **Multiple output modes**: |
| 22 | + - Simple text output for quick checks |
| 23 | + - Live updates with `--follow` (refresh every 2s) |
| 24 | + - Interactive TUI with `--tui` (charts, gauges, keyboard controls) |
| 25 | + - JSON output with `--json` for scripting |
| 26 | +- **Multi-container monitoring**: Monitor all containers with `--all` flag |
| 27 | +- **Rate calculations**: Automatic calculation of bytes/sec for network and disk I/O |
| 28 | + |
| 29 | +**Commands:** |
| 30 | +```bash |
| 31 | +# One-time stats |
| 32 | +dbarena stats <container> |
| 33 | + |
| 34 | +# Live text updates |
| 35 | +dbarena stats <container> --follow |
| 36 | + |
| 37 | +# Interactive TUI dashboard |
| 38 | +dbarena stats <container> --tui |
| 39 | + |
| 40 | +# All containers in JSON |
| 41 | +dbarena stats --all --json |
| 42 | +``` |
| 43 | + |
| 44 | +**TUI Features:** |
| 45 | +- Real-time CPU and memory gauges with color-coded thresholds |
| 46 | +- 60-second history charts (sparklines) for CPU and memory |
| 47 | +- Network I/O statistics with rates |
| 48 | +- Block I/O statistics with rates |
| 49 | +- Keyboard controls: q (quit), f (freeze), r (reset), h (help) |
| 50 | + |
| 51 | +### 2. Container Snapshots 📸 |
| 52 | + |
| 53 | +Save and restore container state as Docker images with metadata. |
| 54 | + |
| 55 | +**Features:** |
| 56 | +- **Create snapshots** from running containers (auto-pause supported) |
| 57 | +- **Restore containers** from snapshots with custom names and ports |
| 58 | +- **Snapshot metadata**: Labels, timestamps, messages, database type |
| 59 | +- **Full lifecycle management**: create, list, restore, delete, inspect |
| 60 | +- **Docker integration**: Uses Docker commit API with proper labeling |
| 61 | + |
| 62 | +**Commands:** |
| 63 | +```bash |
| 64 | +# Create snapshot |
| 65 | +dbarena snapshot create <container> --name <snapshot-name> \ |
| 66 | + --message "Description" |
| 67 | + |
| 68 | +# List all snapshots |
| 69 | +dbarena snapshot list [--json] |
| 70 | + |
| 71 | +# Restore to new container |
| 72 | +dbarena snapshot restore <snapshot> --name <new-name> --port <port> |
| 73 | + |
| 74 | +# Delete snapshot |
| 75 | +dbarena snapshot delete <snapshot> [--yes] |
| 76 | + |
| 77 | +# Inspect details |
| 78 | +dbarena snapshot inspect <snapshot> [--json] |
| 79 | +``` |
| 80 | + |
| 81 | +**Use Cases:** |
| 82 | +- Save database state before migrations |
| 83 | +- Create testing environments from production snapshots |
| 84 | +- Backup container state at specific points in time |
| 85 | +- Quick rollback to known-good states |
| 86 | + |
| 87 | +### 3. Volume Management 💾 |
| 88 | + |
| 89 | +Comprehensive volume lifecycle management for data persistence. |
| 90 | + |
| 91 | +**Features:** |
| 92 | +- **Named volumes**: Docker-managed volumes with automatic cleanup |
| 93 | +- **Bind mounts**: Host directory mounts for local development |
| 94 | +- **Volume CRUD**: Complete create, read, update, delete operations |
| 95 | +- **Label filtering**: Only show dbarena-managed volumes by default |
| 96 | +- **Integration**: Volume specifications in container config |
| 97 | + |
| 98 | +**Commands:** |
| 99 | +```bash |
| 100 | +# Create volume |
| 101 | +dbarena volume create <name> [--mount-path <path>] |
| 102 | + |
| 103 | +# List volumes (dbarena-managed only by default) |
| 104 | +dbarena volume list [--all] [--json] |
| 105 | + |
| 106 | +# Delete volume |
| 107 | +dbarena volume delete <name> [--force] [--yes] |
| 108 | + |
| 109 | +# Inspect details |
| 110 | +dbarena volume inspect <name> [--json] |
| 111 | +``` |
| 112 | + |
| 113 | +**Configuration Support:** |
| 114 | +```toml |
| 115 | +[databases.postgres] |
| 116 | +auto_volume = true |
| 117 | +volume_path = "/var/lib/postgresql/data" |
| 118 | + |
| 119 | +[[databases.postgres.volumes]] |
| 120 | +name = "postgres-data" |
| 121 | +path = "/var/lib/postgresql/data" |
| 122 | +read_only = false |
| 123 | + |
| 124 | +[[databases.postgres.bind_mounts]] |
| 125 | +host = "./backups" |
| 126 | +container = "/backups" |
| 127 | +``` |
| 128 | + |
| 129 | +## 🔧 Configuration Enhancements |
| 130 | + |
| 131 | +### New Configuration Sections |
| 132 | + |
| 133 | +**Monitoring Configuration:** |
| 134 | +```toml |
| 135 | +[monitoring] |
| 136 | +enabled = true |
| 137 | +interval_seconds = 2 |
| 138 | +cpu_warning_threshold = 75.0 |
| 139 | +memory_warning_threshold = 80.0 |
| 140 | +``` |
| 141 | + |
| 142 | +**Snapshots Configuration:** |
| 143 | +```toml |
| 144 | +[snapshots] |
| 145 | +auto_pause = true |
| 146 | +storage_path = "~/.local/share/dbarena/snapshots" |
| 147 | +max_snapshots_per_container = 10 |
| 148 | +``` |
| 149 | + |
| 150 | +**Database Volume Configuration:** |
| 151 | +```toml |
| 152 | +[databases.postgres] |
| 153 | +auto_volume = true |
| 154 | +volume_path = "/var/lib/postgresql/data" |
| 155 | + |
| 156 | +[[databases.postgres.volumes]] |
| 157 | +name = "pg-data" |
| 158 | +path = "/var/lib/postgresql/data" |
| 159 | +read_only = false |
| 160 | +``` |
| 161 | + |
| 162 | +### Version Tracking |
| 163 | +- Added `version` field to config schema for future migrations |
| 164 | +- Current version: "0.3.0" |
| 165 | + |
| 166 | +## 🧪 Testing |
| 167 | + |
| 168 | +### Comprehensive Test Suite |
| 169 | +- **80 unit tests** (added 17 new tests for v0.3.0) |
| 170 | +- **Integration tests** for stats collection and container lifecycle |
| 171 | +- **Smoke tests**: 16/16 passing (documented in SMOKE_TEST_RESULTS_v0.3.0.md) |
| 172 | +- **Test coverage**: |
| 173 | + - Metrics calculation and rate computation |
| 174 | + - Byte/rate formatting functions |
| 175 | + - Snapshot metadata and lifecycle |
| 176 | + - Volume configuration and management |
| 177 | + - TUI helper functions |
| 178 | + - Config schema merging |
| 179 | + |
| 180 | +### Test Results |
| 181 | +``` |
| 182 | +Unit Tests: 80 passed, 0 failed |
| 183 | +Smoke Tests: 16 passed, 0 failed |
| 184 | +Coverage: Comprehensive coverage of all new features |
| 185 | +``` |
| 186 | + |
| 187 | +## 📦 Dependencies |
| 188 | + |
| 189 | +### New Dependencies |
| 190 | +- **ratatui 0.26**: Terminal UI framework for interactive dashboards |
| 191 | +- **crossterm 0.27**: Cross-platform terminal manipulation |
| 192 | + |
| 193 | +### Dependency Philosophy |
| 194 | +- Minimal dependencies, maximum functionality |
| 195 | +- Well-maintained, popular crates only |
| 196 | +- Security-conscious dependency selection |
| 197 | + |
| 198 | +## 🐛 Bug Fixes |
| 199 | + |
| 200 | +### Snapshot Label Formatting |
| 201 | +- **Issue**: Docker commit API rejected label syntax |
| 202 | +- **Fix**: Changed from joined string to newline-separated LABEL instructions |
| 203 | +- **Impact**: Snapshots now work correctly with Docker API |
| 204 | +- **File**: `src/snapshot/storage.rs` |
| 205 | + |
| 206 | +## 🔄 Backwards Compatibility |
| 207 | + |
| 208 | +**100% Compatible** with dbarena v0.2.1: |
| 209 | +- All existing commands work unchanged |
| 210 | +- Config files are fully backwards compatible |
| 211 | +- New config sections are optional |
| 212 | +- Existing containers continue working |
| 213 | +- No data migration required |
| 214 | + |
| 215 | +## 📊 Statistics |
| 216 | + |
| 217 | +### Code Changes |
| 218 | +- **Files modified**: 12 |
| 219 | +- **Files added**: 18 |
| 220 | +- **Lines added**: 3,444 |
| 221 | +- **Lines removed**: 3 |
| 222 | +- **Modules created**: 3 (monitoring, snapshot, volume) |
| 223 | + |
| 224 | +### Feature Breakdown |
| 225 | +- **Performance Monitoring**: ~800 lines |
| 226 | +- **Snapshots**: ~400 lines |
| 227 | +- **Volumes**: ~300 lines |
| 228 | +- **CLI Commands**: ~400 lines |
| 229 | +- **Tests**: ~600 lines |
| 230 | +- **Config & Integration**: ~300 lines |
| 231 | + |
| 232 | +## 🚀 Migration Guide |
| 233 | + |
| 234 | +### From v0.2.1 to v0.3.0 |
| 235 | + |
| 236 | +**No breaking changes!** Simply upgrade: |
| 237 | + |
| 238 | +```bash |
| 239 | +# Update binary |
| 240 | +curl -sSL https://raw.githubusercontent.com/[username]/dbarena/main/install.sh | bash |
| 241 | + |
| 242 | +# Verify version |
| 243 | +dbarena --version |
| 244 | +# Output: dbarena 0.3.0 |
| 245 | + |
| 246 | +# All existing functionality works as before |
| 247 | +dbarena list |
| 248 | +dbarena create postgres |
| 249 | +# ... etc |
| 250 | +``` |
| 251 | + |
| 252 | +**Optional: Enable new features in config:** |
| 253 | + |
| 254 | +```toml |
| 255 | +# Add to your config file (optional) |
| 256 | +version = "0.3.0" |
| 257 | + |
| 258 | +[monitoring] |
| 259 | +enabled = true |
| 260 | + |
| 261 | +[snapshots] |
| 262 | +auto_pause = true |
| 263 | +``` |
| 264 | + |
| 265 | +## 📚 Documentation |
| 266 | + |
| 267 | +### New Documentation |
| 268 | +- `SMOKE_TEST_RESULTS_v0.3.0.md`: Comprehensive test report |
| 269 | +- Updated CLI help text for all new commands |
| 270 | +- Extended config schema documentation |
| 271 | + |
| 272 | +### Command Help |
| 273 | +All new commands include detailed `--help` output: |
| 274 | +```bash |
| 275 | +dbarena stats --help |
| 276 | +dbarena snapshot --help |
| 277 | +dbarena volume --help |
| 278 | +``` |
| 279 | + |
| 280 | +## 🎯 Use Cases |
| 281 | + |
| 282 | +### Development Workflow |
| 283 | +1. **Create development environment**: `dbarena create postgres --name dev-db` |
| 284 | +2. **Monitor performance**: `dbarena stats dev-db --tui` |
| 285 | +3. **Save state before changes**: `dbarena snapshot create dev-db --name before-migration` |
| 286 | +4. **Make changes**: Run migrations, test features |
| 287 | +5. **Rollback if needed**: `dbarena snapshot restore before-migration` |
| 288 | + |
| 289 | +### Testing Workflow |
| 290 | +1. **Create base container**: `dbarena create postgres --name test-base` |
| 291 | +2. **Load test data**: Run seed scripts |
| 292 | +3. **Create snapshot**: `dbarena snapshot create test-base --name seeded` |
| 293 | +4. **Parallel testing**: Restore snapshot multiple times with different names |
| 294 | +5. **Clean up**: `dbarena snapshot delete seeded --yes` |
| 295 | + |
| 296 | +### Production Monitoring |
| 297 | +1. **Monitor containers**: `dbarena stats --all --json > metrics.json` |
| 298 | +2. **Process metrics**: Parse JSON for dashboards/alerts |
| 299 | +3. **Track performance**: Compare metrics over time |
| 300 | +4. **Identify issues**: High CPU/memory usage alerts |
| 301 | + |
| 302 | +## 🏆 Highlights |
| 303 | + |
| 304 | +### Interactive TUI |
| 305 | +Professional terminal UI with: |
| 306 | +- Real-time charts and gauges |
| 307 | +- Color-coded thresholds (green/yellow/red) |
| 308 | +- Keyboard navigation |
| 309 | +- Pause/resume capability |
| 310 | +- 60-second history visualization |
| 311 | + |
| 312 | +### Snapshot System |
| 313 | +Industrial-strength snapshots with: |
| 314 | +- Metadata preservation |
| 315 | +- Docker image integration |
| 316 | +- Unique ID generation |
| 317 | +- Timestamp tracking |
| 318 | +- Message annotations |
| 319 | + |
| 320 | +### Volume Management |
| 321 | +Complete volume lifecycle with: |
| 322 | +- Named volumes support |
| 323 | +- Bind mounts support |
| 324 | +- Read-only mounts |
| 325 | +- Label-based filtering |
| 326 | +- Config file integration |
| 327 | + |
| 328 | +## 🔮 Future Roadmap |
| 329 | + |
| 330 | +### Planned for v0.3.1 (Bulk Operations) |
| 331 | +- Parallel container operations |
| 332 | +- Multi-progress indicators |
| 333 | +- Bulk start/stop/restart |
| 334 | +- Performance: 3-5x faster than sequential |
| 335 | + |
| 336 | +### Planned for v0.3.2 (Advanced Features) |
| 337 | +- Custom network configuration |
| 338 | +- Container connectivity |
| 339 | +- Network isolation |
| 340 | +- Container templates |
| 341 | +- Template import/export |
| 342 | + |
| 343 | +## 🙏 Acknowledgments |
| 344 | + |
| 345 | +- **Ratatui team**: Excellent TUI framework |
| 346 | +- **Bollard team**: Robust Docker API client |
| 347 | +- **Community feedback**: Feature requests and bug reports |
| 348 | + |
| 349 | +## 📝 Full Changelog |
| 350 | + |
| 351 | +See commit history for detailed changes: |
| 352 | +```bash |
| 353 | +git log v0.2.1..v0.3.0 |
| 354 | +``` |
| 355 | + |
| 356 | +## 🔗 Links |
| 357 | + |
| 358 | +- **Repository**: https://github.com/[username]/dbarena |
| 359 | +- **Issues**: https://github.com/[username]/dbarena/issues |
| 360 | +- **Documentation**: https://github.com/[username]/dbarena/tree/main/docs |
| 361 | + |
| 362 | +## 📄 License |
| 363 | + |
| 364 | +MIT OR Apache-2.0 |
| 365 | + |
| 366 | +--- |
| 367 | + |
| 368 | +**Thank you for using dbarena!** 🎉 |
| 369 | + |
| 370 | +For questions, issues, or feature requests, please visit our GitHub repository. |
0 commit comments