ipfrs-cli 0.1.0

Command-line interface for IPFRS distributed content-addressed storage
Documentation
# Changelog

All notable changes to ipfrs-cli 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 (2026-01-09)

#### Gateway TLS/HTTPS Support
- TLS/HTTPS support for HTTP gateway with `--tls-cert` and `--tls-key` CLI flags
- Automatic TLS configuration validation
- Protocol detection (HTTP vs HTTPS)
- Comprehensive error handling for certificate/key files
- Updated documentation with HTTPS examples

Example:
```bash
ipfrs gateway -l 0.0.0.0:8443 --tls-cert cert.pem --tls-key key.pem
```

#### Comprehensive User Guide
- Created `USER_GUIDE.md` with 12 major sections
- Complete CLI feature documentation
- Step-by-step tutorials and workflows
- Network operations guide
- TensorLogic extensions documentation
- Shell scripting integration examples
- Best practices and optimization tips
- Comprehensive troubleshooting section

#### Example Shell Scripts
- Created 5 production-ready workflow scripts in `examples/scripts/`
- All scripts include error handling and documentation

Scripts:
1. **backup.sh** - Repository backup (config, pins, DAG export to CAR)
2. **restore.sh** - Repository restoration from backup
3. **batch_add.sh** - Batch file upload with CID tracking
4. **monitor.sh** - Real-time monitoring dashboard
5. **sync.sh** - Node-to-node content synchronization

Features:
- Comprehensive error handling
- Progress indicators
- Summary statistics
- Usage documentation in `examples/scripts/README.md`

### Changed
- Major refactoring of main.rs: reduced from 4,825 to 2,079 lines (57% code reduction)
- Extracted all command implementations to modular `src/commands/` files
- Updated README.md with current architecture and refactoring notes
- Gateway command enhanced with TLS support
- TODO.md updated with latest enhancements

### Architecture
- Organized codebase into 15+ modular command files for better maintainability
- Single source of truth for all command logic
- Total codebase: 8,652 lines across all modules

### Quality Assurance
- Zero warnings from cargo build and clippy
- All 103 tests passing (43 unit + 51 integration + 9 doc)
- NO WARNINGS policy maintained

## [0.3.0] - "The Fast & The Wise"

### Added
- Terminal UI (TUI) dashboard with real-time monitoring
  - Overview, Network, Storage, and Help tabs
  - Sparkline graphs for network activity
  - Gauge widgets for resource monitoring
  - Keyboard navigation support
- Plugin system for extensibility
  - Plugin discovery from multiple locations
  - Environment variable support for plugins
  - Metadata querying via --plugin-info flag
  - Commands: `plugin list`, `plugin info`, `plugin run`
- Shell completion generation for bash, zsh, fish, PowerShell, and elvish
- Man page generation via `ipfrs-genman` binary
- Auto-update checking mechanism (check only, install TBD)
- Troubleshooting hints for common errors
- Remote daemon management support
- Shell script integration features
  - Exit codes (0-8) for different error conditions
  - Quiet mode (--quiet/-q) for pipeable output
  - JSON output support (--format json)
  - --no-color flag for logs

### Enhanced
- Interactive REPL shell with:
  - Command history persistence
  - Tab completion for commands
  - Multi-line input support with backslash continuation
  - Built-in aliases and user-defined aliases
- Progress indicators
  - Progress bars for uploads/downloads
  - Spinners for long operations
  - Transfer rate and ETA display
- Output formatting
  - Colored output with terminal detection
  - Table formatting for structured data
  - Human-readable file sizes
  - Compact mode for scripting
- Configuration management
  - Config caching with OnceLock (< 1μs cached load time)
  - Environment variable overrides
  - Remote API support

### Performance
- Config caching: < 1μs for cached loads, < 500μs for uncached
- CLI startup time: < 100ms (measured via benchmarks)
- Command parsing: < 10ms
- Added comprehensive benchmark suite using Criterion

### Testing
- 180 total tests across the project
  - 78 unit tests
  - 51 integration tests
  - 9 doc tests
  - 42 criterion benchmarks
- All tests pass with zero warnings

### Documentation
- Enhanced --help text for all commands with examples
- Migration guide from IPFS/Kubo
- Shell scripting integration guide
- Plugin development guide with example plugins
- Troubleshooting guide integrated into error messages

### Commands
All core IPFS-compatible commands plus IPFRS extensions:
- File operations: init, add, get, cat, ls
- Block operations: block get/put/stat/rm, list
- Network: swarm peers/connect/disconnect/addrs, dht findprovs/provide/findpeer
- Bootstrap: bootstrap list/add/rm
- Repository: repo gc/stat/fsck/version
- Pin management: pin add/rm/ls/verify
- DAG operations: dag get/put/resolve/export/import
- Statistics: stats repo/bw/bitswap, id, info, ping
- Daemon: daemon run/start/stop/status/restart
- Gateway: HTTP gateway server
- TensorLogic extensions:
  - tensor add/get/info/export
  - logic infer/prove/kb-stats/kb-save/kb-load
  - semantic search/index/similar/stats/save/load
  - model add/checkpoint/diff/rollback
  - gradient push/pull/aggregate/history

### Library Interface
Exposed as `ipfrs_cli` library for reusability:
- `ipfrs_cli::commands` - Modular command handlers
- `ipfrs_cli::config` - Configuration management
- `ipfrs_cli::output` - Output formatting utilities
- `ipfrs_cli::progress` - Progress indicators
- `ipfrs_cli::shell` - Interactive REPL
- `ipfrs_cli::plugin` - Plugin system
- `ipfrs_cli::tui` - Terminal UI dashboard
- `ipfrs_cli::utils` - Utility functions

## [0.2.0] - Early Development

### Added
- Basic CLI structure with clap
- Core file operations (add, get, cat)
- Daemon management basics
- Block operations
- Initial configuration system

## [0.1.0] - Initial Release

### Added
- Project structure and initial implementation
- Basic IPFRS integration

[Unreleased]: https://github.com/ipfrs/ipfrs/compare/v0.3.0...HEAD
[0.3.0]: https://github.com/ipfrs/ipfrs/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/ipfrs/ipfrs/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/ipfrs/ipfrs/releases/tag/v0.1.0