Skip to content
Veetr

Version management

This project uses centralized version management with the app package.json as the single source of truth.

Current Version System

  • Source of Truth: /app/package.json version field
  • Web App: Synced to /app/src/utils/version.ts
  • Firmware: Synced to #define FIRMWARE_VERSION in /firmware/src/main.cpp

πŸš€ Automated Release Process

Terminal window
./veetr release 0.0.1 # Creates branch, commits, tags, and pushes

What this does automatically:

  1. βœ… Validates the version format (semver)
  2. βœ… Checks git working directory is clean
  3. βœ… Updates all version references
  4. βœ… Commits directly to main with message "Bump to version 0.0.1"
  5. βœ… Creates and pushes git tag 0.0.1
  6. βœ… Pushes changes to main branch

GitHub Actions will then:

  1. πŸ” Validate version consistency across all files
  2. πŸ—οΈ Build web app and firmware to ensure no errors
  3. πŸŽ‰ Create GitHub release with binaries automatically

Complete Release Workflow

Terminal window
# 1. Create release (does everything automatically)
./veetr release 1.2.3
# 2. GitHub Actions automatically validates, builds, and creates release
# 3. Done! Check the releases page for your new release

GitHub Actions Automation

On Tag Creation:

  • Validates: All files have consistent versions
  • Builds: Web app and firmware
  • Creates: GitHub release with firmware binaries
  • Reports: Success/failure with detailed information

Troubleshooting

Release Command Fails

  • Ensure git working directory is clean: git status
  • Check you’re on the main branch: git branch
  • Verify version format: use semver like 1.2.3

Version Inconsistency

  • The veetr CLI now includes built-in version synchronization
  • Check the validation output in GitHub Actions

GitHub Actions Fails

  • Check the workflow logs for specific errors
  • Ensure all files build successfully locally