mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-04-27 15:17:38 +00:00
191 lines
No EOL
6.2 KiB
Markdown
191 lines
No EOL
6.2 KiB
Markdown
# NPM Release Checklist
|
|
|
|
This checklist ensures a smooth and error-free npm release process for VibeTunnel.
|
|
|
|
## Pre-Release Checklist
|
|
|
|
### 1. Code Quality
|
|
- [ ] Run all tests: `pnpm test`
|
|
- [ ] Run linting: `pnpm run lint`
|
|
- [ ] Run type checking: `pnpm run typecheck`
|
|
- [ ] Run format check: `pnpm run format:check`
|
|
- [ ] Fix any issues found: `pnpm run check:fix`
|
|
|
|
### 2. Dependency Updates
|
|
- [ ] Update all dependencies to latest versions
|
|
- [ ] Run `pnpm update --interactive --latest`
|
|
- [ ] Test thoroughly after updates
|
|
- [ ] Check for security vulnerabilities: `pnpm audit`
|
|
|
|
### 3. Version Updates (CRITICAL - Must be synchronized!)
|
|
- [ ] Update version in `web/package.json`
|
|
- [ ] Update version in `web/package.npm.json` (must match!)
|
|
- [ ] Update version in `mac/VibeTunnel/version.xcconfig` (MARKETING_VERSION)
|
|
- [ ] Update version in `ios/VibeTunnel/version.xcconfig` (if applicable)
|
|
- [ ] Ensure all versions match exactly
|
|
|
|
### 4. Changelog
|
|
- [ ] Update CHANGELOG.md with new features, fixes, and breaking changes
|
|
- [ ] Include migration guide for breaking changes
|
|
- [ ] Credit contributors
|
|
|
|
## Build Process
|
|
|
|
### 5. Clean Build
|
|
- [ ] Clean previous builds: `rm -rf dist-npm/ vibetunnel-*.tgz`
|
|
- [ ] Run build: `pnpm run build:npm`
|
|
- [ ] Verify build output shows all platforms built successfully
|
|
- [ ] Check for "✅ authenticate-pam listed as optional dependency" in output
|
|
|
|
### 6. Package Verification (CRITICAL)
|
|
- [ ] Verify tarball exists: `ls -la vibetunnel-*.tgz`
|
|
- [ ] Extract package.json: `tar -xf vibetunnel-*.tgz package/package.json`
|
|
- [ ] Verify authenticate-pam is OPTIONAL:
|
|
```bash
|
|
grep -A5 -B5 authenticate-pam package/package.json
|
|
# Must show under "optionalDependencies", NOT "dependencies"
|
|
```
|
|
- [ ] Clean up: `rm -rf package/`
|
|
- [ ] Check package size is reasonable (~8-15 MB)
|
|
|
|
### 7. Package Contents Verification
|
|
- [ ] List package contents: `tar -tzf vibetunnel-*.tgz | head -50`
|
|
- [ ] Verify critical files are included:
|
|
- [ ] `package/lib/vibetunnel-cli`
|
|
- [ ] `package/lib/cli.js`
|
|
- [ ] `package/bin/vibetunnel`
|
|
- [ ] `package/bin/vt`
|
|
- [ ] `package/scripts/postinstall.js`
|
|
- [ ] `package/scripts/install-vt-command.js`
|
|
- [ ] `package/node-pty/` directory
|
|
- [ ] `package/prebuilds/` directory with .tar.gz files
|
|
- [ ] `package/public/` directory
|
|
|
|
## Testing
|
|
|
|
### 8. Local Installation Test
|
|
- [ ] Test installation: `npm install -g ./vibetunnel-*.tgz`
|
|
- [ ] Verify version: `vibetunnel --version`
|
|
- [ ] Start server: `vibetunnel`
|
|
- [ ] Access web UI: http://localhost:4020
|
|
- [ ] Test vt command: `vt echo "test"`
|
|
- [ ] Uninstall: `npm uninstall -g vibetunnel`
|
|
|
|
### 9. Docker Test (Linux Compatibility)
|
|
- [ ] Create test Dockerfile:
|
|
```dockerfile
|
|
FROM node:20-slim
|
|
COPY vibetunnel-*.tgz /tmp/
|
|
RUN npm install -g /tmp/vibetunnel-*.tgz
|
|
CMD ["vibetunnel", "--version"]
|
|
```
|
|
- [ ] Build: `docker build -t vt-test .`
|
|
- [ ] Run: `docker run --rm vt-test`
|
|
- [ ] Test without PAM headers (should succeed)
|
|
- [ ] Test with PAM: Add `RUN apt-get update && apt-get install -y libpam0g-dev` before install
|
|
|
|
### 10. Cross-Platform Testing
|
|
- [ ] Test on macOS (if available)
|
|
- [ ] Test on Linux x64
|
|
- [ ] Test on Linux ARM64 (if available)
|
|
- [ ] Verify prebuilds are used (no compilation during install)
|
|
|
|
## Publishing
|
|
|
|
### 11. Pre-Publish Checks
|
|
- [ ] Ensure you're logged in to npm: `npm whoami`
|
|
- [ ] Check current tags: `npm dist-tag ls vibetunnel`
|
|
- [ ] Verify no uncommitted changes: `git status`
|
|
- [ ] Create git tag: `git tag v1.0.0-beta.X`
|
|
|
|
### 12. Publish (CRITICAL - Use tarball filename!)
|
|
- [ ] Publish beta: `npm publish vibetunnel-*.tgz --tag beta`
|
|
- [ ] Verify on npm: https://www.npmjs.com/package/vibetunnel
|
|
- [ ] Test installation from npm: `npm install -g vibetunnel@beta`
|
|
|
|
### 13. Post-Publish Verification
|
|
- [ ] Check package page shows correct version
|
|
- [ ] Verify optional dependencies are displayed correctly
|
|
- [ ] Test installation on clean system
|
|
- [ ] Monitor npm downloads and issues
|
|
|
|
### 14. Promotion to Latest (if stable)
|
|
- [ ] Wait for user feedback (at least 24 hours)
|
|
- [ ] If stable, promote: `npm dist-tag add vibetunnel@VERSION latest`
|
|
- [ ] Update documentation to reference new version
|
|
|
|
## Post-Release
|
|
|
|
### 15. Documentation Updates
|
|
- [ ] Update README.md with new version info
|
|
- [ ] Update installation instructions if needed
|
|
- [ ] Update web/docs/npm.md release history
|
|
- [ ] Create GitHub release with changelog
|
|
|
|
### 16. Communication
|
|
- [ ] Announce release on relevant channels
|
|
- [ ] Notify users of breaking changes
|
|
- [ ] Thank contributors
|
|
|
|
## Emergency Procedures
|
|
|
|
### If Wrong package.json Was Used
|
|
1. **DO NOT PANIC**
|
|
2. Check if authenticate-pam is a regular dependency (bad) or optional (good)
|
|
3. If bad, deprecate immediately:
|
|
```bash
|
|
npm deprecate vibetunnel@VERSION "Installation issues on Linux. Use next version."
|
|
```
|
|
4. Increment version and republish following this checklist
|
|
|
|
### If Build Failed to Include Files
|
|
1. Check build logs for errors
|
|
2. Verify all copy operations in build-npm.js succeeded
|
|
3. Ensure no .gitignore or .npmignore is excluding files
|
|
4. Rebuild with verbose logging if needed
|
|
|
|
## Common Issues to Avoid
|
|
|
|
1. **NEVER use `npm publish` without tarball filename** - it may rebuild with wrong config
|
|
2. **ALWAYS verify authenticate-pam is optional** before publishing
|
|
3. **ALWAYS sync versions** across all config files
|
|
4. **NEVER skip the Docker test** - it catches Linux issues
|
|
5. **ALWAYS use beta tag first** - easier to fix issues before promoting to latest
|
|
|
|
## Version Numbering
|
|
|
|
- Beta releases: `1.0.0-beta.X` where X increments
|
|
- Patch releases: `1.0.0-beta.X.Y` where Y is patch number
|
|
- Stable releases: `1.0.0` (no beta suffix)
|
|
|
|
## Quick Commands Reference
|
|
|
|
```bash
|
|
# Update dependencies
|
|
pnpm update --interactive --latest
|
|
|
|
# Build
|
|
pnpm run build:npm
|
|
|
|
# Verify
|
|
tar -xf vibetunnel-*.tgz package/package.json && \
|
|
grep -A5 optionalDependencies package/package.json && \
|
|
rm -rf package/
|
|
|
|
# Publish
|
|
npm publish vibetunnel-*.tgz --tag beta
|
|
|
|
# Promote to latest
|
|
npm dist-tag add vibetunnel@VERSION latest
|
|
|
|
# Check tags
|
|
npm dist-tag ls vibetunnel
|
|
```
|
|
|
|
## Release Frequency
|
|
|
|
- Beta releases: As needed for testing new features
|
|
- Stable releases: After thorough testing and user feedback
|
|
- Security patches: ASAP after discovery
|
|
|
|
Remember: It's better to delay a release than to publish a broken package! |