Releases: dartilesm/vercel-blob-action
v2.1.0 - Folder Upload Support
🚀 New Feature: Folder Upload Support
This release adds comprehensive folder upload functionality, allowing you to upload entire directories while maintaining their structure in Vercel Blob storage.
✨ New Features
- 📁 Folder Upload: Upload entire directories with recursive file discovery
- 🏗️ Structure Preservation: Maintains original folder hierarchy in blob storage
- 🔄 Nested Directory Support: Handles subdirectories and complex folder structures
- 📊 Progress Logging: Clear visibility into upload progress for each file
🛠 Code Quality Improvements
- Better Readability: Improved code structure and maintainability
- Enhanced Documentation: Comprehensive TypeScript documentation and comments
- Error Handling: Improved validation and error messages
📚 Documentation Updates
- Unified Examples: Combined Usage and Examples sections for better clarity
- Consistent Versioning: All examples now use @v2consistently
- Updated Descriptions: Improved action.yml and README descriptions
- Privacy Focus: Corrected outputs documentation (no URL exposure)
🎯 Usage Examples
Single File Upload:
- name: Upload file to Vercel Blob
  uses: dartilesm/vercel-blob-action@v2
  with:
    source: "file.txt"
    destination: "uploads/file.txt"
    read-write-token: ${{ secrets.BLOB_READ_WRITE_TOKEN }}Folder Upload:
- name: Upload build folder to Vercel Blob
  uses: dartilesm/vercel-blob-action@v2
  with:
    source: "dist/"
    destination: "builds/${{ github.sha }}"
    read-write-token: ${{ secrets.BLOB_READ_WRITE_TOKEN }}📦 What Gets Uploaded
When uploading a folder like dist/ with this structure:
dist/
├── index.html
├── assets/
│   ├── style.css
│   └── script.js
└── images/
    └── logo.png
Files are uploaded maintaining the structure:
- dist/index.html→- builds/{sha}/index.html
- dist/assets/style.css→- builds/{sha}/assets/style.css
- dist/assets/script.js→- builds/{sha}/assets/script.js
- dist/images/logo.png→- builds/{sha}/images/logo.png
🔄 Backward Compatibility
- ✅ No Breaking Changes: Existing single file workflows continue to work unchanged
- ✅ Same Inputs: source,destination, andread-write-tokenremain the same
- ✅ Same Behavior: Single file uploads work exactly as before
🏗️ Technical Details
- Memory Efficient: Files are streamed individually for optimal performance
- Cross-Platform: Uses path.posix.joinfor consistent blob paths
- Recursive Discovery: Automatically finds all files in directories and subdirectories
- Public Access: All uploaded files have public access by default
This release makes the action significantly more versatile for real-world deployment scenarios while maintaining full backward compatibility.
v2.0.0 - TypeScript Migration with Auto-Build
🚀 Major Release: TypeScript Migration
This release migrates the action from JavaScript to TypeScript and introduces a comprehensive build process with automatic dependency bundling.
✨ New Features
- TypeScript Migration: Full TypeScript implementation with type safety
- Auto-Build Process: Pre-commit hooks ensure dist files are always in sync
- Bundled Dependencies: Self-contained action with all dependencies bundled
- Improved Privacy: Blob URLs no longer exposed in workflow logs
- Public Access: Files uploaded with public access by default
🛠 Technical Improvements
- Build System: Uses TypeScript compiler + Vercel's ncc bundler
- Development Workflow: Automated build process with husky pre-commit hooks
- Documentation: Comprehensive development guide and project structure docs
- CI/CD: GitHub Actions workflow for build verification
📦 What's Bundled
- All dependencies are now bundled into a single dist/index.jsfile
- Consumers don't need to install any dependencies
- Action is completely self-contained and ready to use
🔄 Migration Notes
- Backward Compatible: No changes needed for existing workflows
- Same Inputs: source,destination, andread-write-tokenremain the same
- No URL Output: The action no longer outputs the blob URL for privacy
- Check Vercel Dashboard: Access uploaded files through your Vercel dashboard
🏗 For Developers
- TypeScript source code in src/index.ts
- Automated build process with npm run build
- Pre-commit hooks ensure consistency
- Comprehensive development documentation
This release maintains full backward compatibility while providing better reliability, type safety, and developer experience.
v1.1.0: Marketplace-Ready with Comprehensive Documentation
🚀 Marketplace-Ready Release
This release prepares the Vercel Blob GitHub Action for publication to GitHub Marketplace and includes comprehensive code documentation and improvements.
✨ New Features & Improvements
🏪 GitHub Marketplace Compliance
- Enhanced action metadata: Updated action name to "Upload to Vercel Blob" for better discoverability
- Added author information: Included proper author metadata for marketplace listing
- Improved branding: Updated icon to upload-cloudfor better visual representation
📝 Comprehensive Documentation
- Detailed code comments: Added extensive comments to src/index.jsexplaining each step of the upload process
- Action metadata documentation: Added explanatory comments to action.ymlfor better understanding
- JSDoc-style documentation: Professional documentation standards throughout the codebase
- Error handling explanations: Documented all error scenarios and their responses
🔧 Technical Improvements
- Fixed Vercel SDK usage: Removed unnecessary options object from put()function call
- Enhanced error messages: Improved error messages for better debugging experience
- Environment variable handling: Properly documented and implemented token environment variable setup
- Code architecture: Improved code structure with clear separation of concerns
📚 Documentation Updates
- Cleaned README: Removed references to non-existent examples and improved accuracy
- Updated usage examples: Fixed repository references and improved example clarity
- Added use cases section: Documented various scenarios where the action can be used
- Marketplace-optimized content: Tailored documentation for marketplace users
📋 Usage
- name: Upload to Vercel Blob
  uses: dartilesm/vercel-blob-action@v1.1.0
  with:
    source: "path/to/file.txt"
    destination: "uploads/file.txt"
    read-write-token: ${{ secrets.BLOB_READ_WRITE_TOKEN }}🔄 Migration from v1.0.0
No breaking changes! This release is fully backward compatible with v1.0.0. Simply update your workflow to use @v1.1.0 or continue using @v1 for automatic updates.
🏷️ Version Tags
- Use @v1.1.0for this specific version
- Use @v1for automatic updates within the v1 major version (recommended)
- Use @masterfor the latest development version (not recommended for production)
📦 What's Changed
- Enhanced marketplace compliance and documentation by @dartilesm in #2
- Comprehensive code comments and improved error handling
- Updated branding and metadata for better discoverability
🙏 Acknowledgments
This release makes the action ready for GitHub Marketplace publication and provides a solid foundation for community contributions.
Full Changelog: v1.0.0...v1.1.0
v1.0.0: Initial Release of Vercel Blob GitHub Action
🎉 Initial Release
This is the first release of the Vercel Blob GitHub Action, providing a simple and powerful way to upload files to Vercel Blob storage from your GitHub Actions workflows.
✨ Features
- Complete GitHub Action: Ready-to-use action with proper metadata and configuration
- Vercel Blob Integration: Uses the official @vercel/blobSDK for reliable uploads
- Token Support: Accepts BLOB_READ_WRITE_TOKENand automatically configures environment variables
- Comprehensive Documentation: Detailed README with setup instructions and examples
- Sample Workflows: Multiple workflow examples demonstrating various use cases
- Error Handling: Robust error handling with clear feedback
- Modern Stack: Built with Node.js 20 and ES modules
📋 Usage
- name: Upload to Vercel Blob
  uses: dartilesm/vercel-blob-action@v1
  with:
    source: "path/to/file.txt"
    destination: "uploads/file.txt"
    read-write-token: ${{ secrets.BLOB_READ_WRITE_TOKEN }}🔧 Setup
- Get your BLOB_READ_WRITE_TOKENfrom your Vercel dashboard
- Add it as a GitHub secret in your repository
- Use the action in your workflows
📚 Documentation
See the README for complete documentation and examples.
🏷️ Version Tags
- Use @v1.0.0for this specific version
- Use @v1for automatic updates within the v1 major version