docs: update documentation for v4.0.0 release

- Rewrite README.md for Deno-based binary distribution
  - Update installation instructions for binary downloads
  - Document new subcommand CLI structure
  - Add troubleshooting, security, and development sections
  - Remove Node.js references, add Deno information

- Add comprehensive v4.0.0 changelog entry
  - Document all breaking changes
  - List new features and technical improvements
  - Provide migration guide and command mapping
  - Include technical details and benefits

- Create MIGRATION.md guide for v3.x to v4.0 upgrade
  - Step-by-step migration instructions
  - Configuration compatibility information
  - Troubleshooting common migration issues
  - Rollback procedures
  - Post-migration best practices
This commit is contained in:
2025-10-18 13:33:46 +00:00
parent df6a44d5d9
commit a2ae9960b6
3 changed files with 898 additions and 189 deletions

View File

@@ -1,5 +1,152 @@
# Changelog
## 2025-10-18 - 4.0.0 - BREAKING CHANGE(core): Complete migration to Deno runtime
**MAJOR RELEASE: NUPST v4.0 is a complete rewrite powered by Deno**
This release fundamentally changes NUPST's architecture from Node.js-based to Deno-based, distributed as pre-compiled binaries. This is a **breaking change** in terms of installation and distribution, but configuration files from v3.x are **fully compatible**.
### Breaking Changes
**Installation & Distribution:**
- **Removed**: Node.js runtime dependency - NUPST no longer requires Node.js
- **Removed**: npm package distribution (no longer published to npmjs.org)
- **Removed**: `bin/nupst` wrapper script
- **Removed**: `setup.sh` dependency installation
- **Removed**: All Node.js-related files (package.json, tsconfig.json, pnpm-lock.yaml, npmextra.json)
- **Changed**: Installation now downloads pre-compiled binaries instead of cloning repository
- **Changed**: Binary-based distribution (~340MB self-contained executables)
**CLI Structure (Backward Compatible):**
- **Changed**: Commands now use subcommand structure (e.g., `nupst service enable` instead of `nupst enable`)
- **Maintained**: Old command format still works with deprecation warnings for smooth migration
- **Added**: Aliases for common commands (`nupst ls`, `nupst rm`)
### New Features
**Distribution & Installation:**
- Pre-compiled binaries for 5 platforms:
- Linux x86_64
- Linux ARM64
- macOS x86_64 (Intel)
- macOS ARM64 (Apple Silicon)
- Windows x86_64
- Automated binary releases via Gitea Actions
- SHA256 checksum verification for all releases
- Installation from Gitea releases via updated `install.sh`
- Zero dependencies - completely self-contained binaries
- Cross-platform compilation from single codebase
**CI/CD Automation:**
- Gitea Actions workflows for continuous integration
- Automated release workflow triggered by git tags
- Automatic binary compilation for all platforms on release
- Type checking and linting in CI pipeline
- Build verification on every push
**CLI Improvements:**
- New hierarchical command structure with subcommands
- `nupst service` - Service management (enable, disable, start, stop, restart, status, logs)
- `nupst ups` - UPS device management (add, edit, remove, list, test)
- `nupst group` - Group management (add, edit, remove, list)
- `nupst config show` - Display configuration
- `nupst --version` - Show version information
- Better help messages organized by category
- Backward compatibility maintained with deprecation warnings
**Technical Improvements:**
- Deno runtime for modern TypeScript/JavaScript execution
- Native TypeScript support without compilation step
- Faster startup and execution compared to Node.js
- Smaller memory footprint
- Built-in permissions system
- No build step required for development
### Migration Guide
**For Users:**
1. Stop existing v3.x service: `sudo nupst disable`
2. Install v4.0 using new installer: `curl -sSL https://code.foss.global/serve.zone/nupst/raw/branch/main/install.sh | sudo bash -s -- -y`
3. Your configuration at `/etc/nupst/config.json` is preserved and fully compatible
4. Enable service with new CLI: `sudo nupst service enable && sudo nupst service start`
5. Update systemd commands to use new syntax (old syntax still works with warnings)
**Configuration Compatibility:**
- All configuration files from v3.x work without modification
- No changes to `/etc/nupst/config.json` format
- All SNMP settings, thresholds, and group configurations preserved
**Command Mapping:**
```bash
# Old (v3.x) → New (v4.0)
nupst enable → nupst service enable
nupst disable → nupst service disable
nupst start → nupst service start
nupst stop → nupst service stop
nupst status → nupst service status
nupst logs → nupst service logs
nupst add → nupst ups add
nupst edit [id] → nupst ups edit [id]
nupst delete <id> → nupst ups remove <id>
nupst list → nupst ups list
nupst test → nupst ups test
nupst group add → nupst group add (unchanged)
nupst group edit <id> → nupst group edit <id> (unchanged)
nupst group delete <id> → nupst group remove <id>
nupst group list → nupst group list (unchanged)
nupst config → nupst config show
```
### Technical Details
**Commit History:**
- `df6a44d`: Complete migration with Gitea Actions workflows and install.sh updates
- `9efcc4b`: CLI reorganization with subcommand structure
- `5903ae7`: Cross-platform compilation scripts
- `a649c59`: Deno migration with npm: and node: specifiers
- `5f4f3ec`: Initial migration to Deno
**Files Changed:**
- Removed: 11 files (package.json, tsconfig.json, pnpm-lock.yaml, npmextra.json, bin/nupst, setup.sh)
- Added: 3 Gitea Actions workflows (ci.yml, release.yml, README.md)
- Modified: 14 TypeScript files for Deno compatibility
- Updated: install.sh, .gitignore, readme.md
- Net reduction: -10,242 lines (93% reduction in repository size)
**Dependencies:**
- Runtime: Deno v1.x (bundled in binary, no installation required)
- SNMP: npm:net-snmp@3.20.0 (bundled in binary via npm: specifier)
- Node.js built-ins: Accessed via node: specifier (node:fs, node:child_process, etc.)
### Benefits
**For Users:**
- **Faster Installation**: Download single binary instead of cloning repo + installing Node.js + npm dependencies
- **Zero Dependencies**: No Node.js or npm required on target system
- **Smaller Footprint**: Single binary vs repo + Node.js + node_modules
- **Easier Updates**: Download new binary instead of git pull + npm install
- **Better Security**: No npm supply chain risks, binary checksums provided
- **Platform Support**: Official binaries for all major platforms
**For Developers:**
- **Modern Tooling**: Native TypeScript support without build configuration
- **Faster Development**: No compilation step during development
- **CI/CD Automation**: Automated releases and testing
- **Cleaner Codebase**: 93% reduction in configuration files
- **Cross-Platform**: Compile for all platforms from any platform
### Known Issues
- Windows ARM64 not supported (Deno limitation)
- Binary sizes are larger (~340MB) due to bundled runtime (trade-off for zero dependencies)
- First-time execution may be slower on some systems (binary extraction)
### Acknowledgments
This release represents a complete modernization of NUPST's infrastructure while maintaining full backward compatibility for user configurations. Special thanks to the Deno team for creating an excellent runtime that made this migration possible.
---
## 2025-03-28 - 3.1.2 - fix(cli/ups-handler)
Improve UPS device listing table formatting for better column alignment