Skip to content

v2.0.0 - Unified Device Response Protocol & v1/v2 Branching Strategy (2025-12-29)

What Changed?

v2.0.0 marks the official launch of the main branch as v2 development, establishing a clear branching strategy for long-term maintenance. This major release establishes v2 as the default with unified device response protocol, while v1 enters maintenance mode on the v1 branch. Build configuration and development workflows are reorganized to reflect this new structure.


What's New

Breaking Change: v2 as Default Build Configuration

v2 is now the primary development target on the main branch. The base PlatformIO configuration defaults to v2 flags (unified device response protocol, JSONL output, full feature set).

What it means:

  • New developers check out main branch and build v2 by default
  • v1 branch is dedicated to v1.x maintenance only
  • Clear separation of concerns: v0 (archived), v1 (maintenance), v2 (next-gen)

How to build:

# Main branch (v2 development)
git switch main
task v2:build

# v1 branch (maintenance)
git switch v1
task v1:build

Platform Configuration Reorganization

PlatformIO configuration clarified with explicit per-profile feature matrices.

What changed:

  • Base [env] section now inherits v2 defaults
  • v0/v1 profiles explicitly override only necessary differences
  • Deprecation notices added to v0/v1 profiles
  • Local override template updated for v2 development

Installation

Quick Start (v2 on main branch)

# Update to v2.0.0 release
git fetch origin
git checkout v2.0.0

# Build v2 firmware
task v2:build

# Upload to ESP32
task v2:upload

# Monitor output
task monitor

For v1 Maintenance (v1 branch)

# Switch to v1 maintenance branch
git switch v1
git pull origin v1

# Build v1 firmware
task v1:build

# Upload to ESP32
task v1:upload

# Monitor output
task monitor

What's Different from the Last Version?

✅ Added

  • Explicit v1/v2 branching strategy with dedicated maintenance branches
  • Deprecation notices for v0 and v1 build profiles
  • Reorganized PlatformIO configuration with clear per-profile feature matrices
  • Updated platformio.override.ini template for v2 development
  • Release documentation for v2.0.0 milestone

Changed

  • Base [env] configuration now defaults to v2 flags (ENABLE_DEVICE_RESPONSE=1, STREAM_FORMAT=3)
  • v0/v1 profiles now inherit from base and only override differences
  • platformio.override.ini switched from esp32dev-v1 to esp32dev-v2 as default
  • Build profile documentation clarified with section headers and feature lists

Deprecated

  • v0 (esp32dev-v0) - Archived prototype, will be removed in near future
  • v1 (esp32dev-v1) - Maintenance mode on v1 branch, will be removed in near future

Is It Safe to Upgrade?

Backward Compatible: No - This is a major breaking change

Migration Path:

  • v1.x users on main branch: Upgrade to v2.0.0 to stay on main branch with latest features
  • v1.x users on v1 branch: Switch to git switch v1 for maintenance-only releases
  • v0 users: Migrate to v1 for production or v2 for new development

What will break:

  • Any custom build configurations assuming legacy v1 defaults may need updating
  • v0/v1 build profiles marked as deprecated and will be removed in future releases

Tests Passed

  • Build verification: v2 profile compiles without errors
  • Configuration consistency: All three profiles (v0/v1/v2) validated
  • Documentation: Release notes and build configuration updated
  • Version management: Semantic versioning and changelog automation verified

Release Details

  • Date: 2025-12-29
  • Version: v2.0.0
  • Files Changed: 5 (platformio.ini, platformio.override.ini, CHANGELOG.md, pyproject.toml, include/config.h)
  • Commits: 5 (configuration reorganization + version bump)

Next Steps

  • Ensure v1 branch is up-to-date with latest v1.x maintenance
  • Monitor v2 development and user feedback on unified protocol
  • Plan v2.1.0 release with next set of features
  • Consider removing v0 profile in v2.5.0 or v3.0.0