Skip to content

Releases: dockergiant/rolldev

0.6.1

19 Jan 11:37

Choose a tag to compare

RollDev 0.6.1 Release Notes

🐛 Bug Fixes

Fixed restore and restore-full Commands Exiting Silently

The restore and restore-full commands were silently exiting with code 1 when run without the --verbose flag.

Root Cause:

The logVerbose() function used a conditional expression that returned exit code 1 when verbose mode was disabled:

# Before - returns exit code 1 when RESTORE_VERBOSE=0
[[ $RESTORE_VERBOSE -eq 1 ]] && logMessage INFO "$@"

# After - always returns exit code 0
[[ $RESTORE_VERBOSE -eq 1 ]] && logMessage INFO "$@" || true

With set -e in the main roll script, this caused immediate termination.


Added Progress Output for Restore Commands

The restore and restore-full commands now show progress messages by default, so users can see what's happening without needing --verbose.

Before:

$ roll restore-full backup.tar.gz /path/to/project
$ # (no output, appeared to do nothing)

After:

$ roll restore-full backup.tar.gz /path/to/project
INFO: Starting full restore from backup.tar.gz...
INFO: Extracting backup archive...
SUCCESS: Archive extracted
INFO: Available services in backup: db redis elasticsearch
INFO: Restoring services: db redis elasticsearch
INFO: Restoring source code...
SUCCESS: Source code restored
INFO: Restoring configuration files...
SUCCESS: Configuration restore completed
INFO: Restoring db volume...
SUCCESS: Successfully restored db volume
INFO: Signing SSL certificates for project.test...
SUCCESS: SSL certificates signed for project.test
SUCCESS: Restore completed successfully!
INFO: You can now start your environment with: roll env up

📝 Files Changed

File Change
commands/restore-full.cmd Fixed logVerbose() return code, added progress messages
commands/restore.cmd Fixed logVerbose() return code, added progress messages

🚀 Upgrade Instructions

  1. Update RollDev:

    brew upgrade dockergiant/roll/roll
    # or pull latest if installed from source
  2. Verify the fix:

    roll restore-full backup.tar.gz /path/to/project
    # Should now show progress output

Full Changelog: 0.6.0...0.6.1


v0.6.1 • Restore Commands Fixed! 🔧

0.6.0

19 Jan 11:15

Choose a tag to compare

RollDev 0.6.0 Release Notes

✨ New Features

🔄 Traefik v3 Compatibility

RollDev now fully supports Traefik v3 with updated routing syntax across all environments.
Subdomains routing now works correctly with the latest Traefik version.

Highlights:

  • Updated HostRegexp Syntax: Migrated from Traefik v2 {subdomain:.+} to v3 regex format
  • All Environments Updated: nginx, varnish, magento2, and multistore configurations
  • Seamless Upgrade: Just restart your environment to apply new routing rules

Breaking Change:

If you have custom .roll/roll-env.yml files with HostRegexp rules, update them:

# Old (Traefik v2) - no longer works
HostRegexp(`{subdomain:.+}.domain.test`)

# New (Traefik v3) - use this format
HostRegexp(`^.+\.domain\.test$$`)

🔍 Verbose Mode for Restore Commands

Both restore and restore-full commands now support --verbose / -v flag for detailed debugging output. Perfect for troubleshooting restore issues.

Highlights:

  • Detailed Logging: See exactly what's happening at each step
  • Debug Information: Volume mappings, file paths, Docker commands
  • Error Tracing: Easily identify where issues occur

Usage:

roll restore --verbose
roll restore --verbose 1737123456

roll restore-full -v backup.tar.gz /path/to/project
roll restore-full --verbose --force backup.tar.gz /path/to/project

🔐 Automatic SSL Certificate Signing on Restore

The restore and restore-full commands now automatically sign SSL certificates for the environment domain after a successful restore. No more manual certificate signing!

Highlights:

  • Auto-Detect Domain: Uses TRAEFIK_DOMAIN from restored configuration
  • Wildcard Support: Signs both domain.test and *.domain.test certificates
  • Traefik Reload: Automatically regenerates traefik config and restarts

What happens automatically:

roll restore-full backup.tar.gz /path/to/project

# After restore completes, RollDev automatically:
# 1. Signs certificate for project.test
# 2. Signs certificate for *.project.test
# 3. Regenerates traefik dynamic.yml
# 4. Restarts traefik to load new certificates

📚 Enhanced Multi-Store Documentation

Added comprehensive documentation for the multistore command in Magento 2 environments.

Highlights:

  • Help Integration: multistore now shows in roll --help for Magento 2 projects
  • Full Documentation: New "Multi-Store Configuration" section in Magento 2 docs
  • Quick Start Guide: Step-by-step setup with examples
  • Troubleshooting: Common issues and solutions

🐛 Bug Fixes

Fixed restore-full Command Failing on First-Time Restore

The restore-full command was silently exiting when restoring to a new/empty directory on Linux (Ubuntu).

Root Causes Fixed:

  • Arithmetic Exit: ((var++)) returns 0 when variable is 0, causing set -e to exit. Changed to var=$((var + 1))
  • Missing Config Handling: stopEnvironment() now handles missing .env.roll gracefully instead of calling roll env commands that fail

Fixed Help Flag Handling

Commands with arguments now properly support the --help flag.

Silenced macOS Extended Attribute Warnings

Suppressed the LIBARCHIVE.xattr.com.apple.provenance warnings that appeared on Linux when extracting backups created on macOS:

# Before: Spammed console with warnings
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.com.apple.provenance'
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.com.apple.provenance'
...

# After: Clean output
INFO: Extracting backup archive...
SUCCESS: Backup extracted

📝 Files Updated for Traefik v3

File Change
environments/includes/nginx.base.yml Updated HostRegexp syntax
environments/includes/varnish.base.yml Updated HostRegexp syntax
environments/magento2/magento2.base.yml Updated HostRegexp syntax
commands/multistore.cmd Updated dynamic rule generation
docs/configuration/multipledomains.md Updated examples

🚀 Upgrade Instructions

  1. Update RollDev:

    brew upgrade dockergiant/roll/roll
    # or pull latest if installed from source
  2. Restart global services (gets Traefik v3):

    roll svc down
    roll svc up
  3. For each project, restart to apply new routing:

    cd /path/to/project
    roll env down
    roll env up
  4. If using multistore, regenerate configuration:

    roll multistore refresh
    roll env restart nginx

🎯 Benefits

  • Traefik v3 Ready: Full compatibility with latest Traefik version
  • Better Debugging: Verbose mode makes troubleshooting restores easy
  • Smoother Restores: SSL certificates handled automatically
  • Cross-Platform: Fixed restore issues on Linux/Ubuntu

Full Changelog: 0.5.2...0.6.0


v0.6.0 • Traefik v3 + Smoother Restores! 🔄🔐

0.5.2

10 Dec 15:52

Choose a tag to compare

RollDev 0.5.2 Release Notes

✨ New Features

🏪 Multi-Store Configuration Command

RollDev now includes a roll multistore command for automatic Magento multi-store setup.
Configure multiple storefronts with a simple JSON file - no manual YAML editing required.

Highlights:

  • Simple JSON Configuration: Define hostname-to-store mappings in .roll/stores.json
  • Auto-Generated Configs: Creates Traefik routing rules, nginx store mapping, and extra_hosts
  • SSL Certificate Signing: Automatically signs certificates for all configured hostnames
  • Zero Manual YAML: No need to manually edit roll-env.yml for multi-store setups

Usage:

# Create .roll/stores.json with your store configuration
roll multistore init      # First time setup - generates configs + signs SSL
roll multistore refresh   # Regenerate after editing stores.json
roll multistore list      # View current configuration

Configuration Example (.roll/stores.json):

{
  "stores": {
    "store-nl.test": "store_nl",
    "store-be.test": "store_be",
    "main.test": ""
  },
  "run_type": "store"
}

📋 Environment Describe Command

New roll env describe command provides a DDEV-style overview of your environment.
Get instant visibility into running services, URLs, and configuration.

Highlights:

  • Service Status Table: Shows all services with running/stopped status
  • URL Overview: Lists all configured project URLs including multi-store domains
  • Environment Info: Displays PHP, Node, Composer versions at a glance
  • Clean Table Layout: DDEV-inspired bordered table format with color-coded status

Usage:

  roll env describe    # or just: roll describe

  Output Example:

  ┌─────────────────────────────────────────────────────────────────────────────┐
  │ Project: myproject /path/to/project                                         │
  │ Domain:  https://app.myproject.test                                         │
  │ Type:    magento2 PHP 8.4 | Node 22                                         │
  │ Router:  traefik                                                            │
  ├──────────────┼──────────┼─────────────────────────────────┼─────────────────┤
  │ SERVICE      │ STATUS   │ URL/PORT                        │ INFO            │
  ├──────────────┼──────────┼─────────────────────────────────┼─────────────────┤
  │ nginx        │ running  │ https://app.myproject.test      │ magento2        │
  │ php-fpm      │ running  │ InDocker: php-fpm:9000          │ PHP 8.4         │
  │ db           │ running  │ InDocker: db:3306               │ mariadb:10.4    │
  │ redis        │ running  │ InDocker: redis:6379            │ Redis 7.2       │
  │ opensearch   │ running  │ InDocker: opensearch:9200       │ OS 2.5          │
  └──────────────┴──────────┴─────────────────────────────────┴─────────────────┘

🐛 Bug Fixes

  • Fixed nginx MAGE_RUN_CODE/MAGE_RUN_TYPE fastcgi parameters for multi-store support
  • Added /etc/nginx/default.d/ directory in nginx image for custom store mappings

📝 Documentation

  • Added roll multistore --help with comprehensive usage guide
  • Added roll env describe --help documentation

🎯 Benefits

  • Simplified Multi-Store: Configure multiple Magento stores in minutes, not hours
  • Better Visibility: Instantly see environment status without running multiple commands
  • DDEV Familiarity: Commands designed to feel familiar for DDEV users migrating to RollDev

Full Changelog: 0.5.1...0.5.2


v0.5.2 • Multi-store made easy + environment visibility! 🏪📋

0.5.1

10 Dec 13:45

Choose a tag to compare

Full Changelog: 0.5.0...0.5.1

0.5.0

13 Sep 17:12

Choose a tag to compare

RollDev 0.5.0 Release Notes

✨ New Features

📊 New Relic Monitoring Integration

RollDev now includes first-class support for New Relic APM across all environments.
This allows developers to monitor PHP application performance with zero overhead when disabled.

Highlights:

  • Global & Project-Level Configuration: Set license key once globally or override per project.
  • Conditional Loading: New Relic PHP agent is installed but only activated when ROLL_NEWRELIC=1.
  • Auto App Naming: Default app names follow the RollDev-LocalEnv-{project} pattern.
  • Local Dev Optimized: Raw SQL queries, 1ms thresholds, and enhanced debugging.
  • Cross-Environment Support: Magento, Symfony, Laravel, WordPress, TYPO3, Akeneo, Shopware, PHP standalone, and more.

Documentation: [New Relic Monitoring Guide](docs/configuration/newrelic.md)

🗑️ Removed

  • Blackfire Profiling Documentation was removed from the repository.
    RollDev is now focused on New Relic for monitoring, though you can still use custom setups externally.

📝 Documentation

  • Added comprehensive New Relic setup guide with examples for enabling/disabling.
  • Updated services.md with New Relic service profile information.
  • Inline comments added to all init.env files for quick setup.

🎯 Benefits

  • Performance Insights: Gain full APM capabilities for PHP projects in local and staging environments.
  • Flexibility: Configure once globally or fine-tune per project.
  • Zero Overhead: Disabled by default, no performance cost until explicitly enabled.
  • Unified Monitoring: Standardized setup across all supported environments.

Command Help:

# Enable New Relic for a project
echo "ROLL_NEWRELIC=1" >> .env
roll restart

Full Changelog: [0.4.3...0.5.0](0.4.3...0.5.0)


v0.5.0 • New Relic integration brings powerful APM to RollDev! 🚀

0.4.3

19 Aug 08:18

Choose a tag to compare

RollDev 0.4.3 Release Notes

🐛 Bug Fixes

🛠️ Status Command Fix

Fixed a critical bug in the roll status command that caused crashes when no projects were running.

Problem: The status command would fail with projectNetworkList: bad array subscript error when executed with no running RollDev projects.

Solution: Added proper array bounds checking before accessing array elements, preventing the crash when the project list is empty.

Impact: The roll status command now works reliably in all scenarios, whether projects are running or not.

📝 Documentation

  • Updated README with latest information

🎯 Benefits

  • Improved Reliability: Status command no longer crashes in empty environments
  • Better Developer Experience: Consistent behavior regardless of project state
  • Error Prevention: Proper bounds checking prevents similar issues

Command Help: roll status

Full Changelog: 0.4.2...0.4.3


v0.4.3 • Status command now handles empty environments gracefully! 🎉

0.4.2

22 Jun 13:28

Choose a tag to compare

RollDev 0.4.2 Release Notes

🔄 Changed

📦 Elasticvue: Switched to Official Image with Auto-Import Support

We’ve replaced our custom Elasticvue fork (rollupdev/elasticvue) with the official image:
cars10/elasticvue:latest

Thanks to cars10/elasticvue#254, predefined clusters defined via ELASTICVUE_CLUSTERS are now automatically imported on launch, eliminating the need for manual setup or clicks.

This perfectly matches our use case for scripted local development environments, making our previous workaround obsolete. Elasticvue is now seamlessly integrated into every dev project with zero user interaction required.

In addition, by switching to the latest upstream version, Elasticvue in RollDev is now fully compatible with Elasticsearch 8+, ensuring support for modern clusters out of the box.


🙏 Special thanks to [@cars10](https://github.com/cars10)
for implementing this feature and actively engaging with community feedback, it’s a huge quality-of-life improvement for automated dev setups!


Full changelog:
0.4.1...0.4.2

0.4.1

19 Jun 12:07

Choose a tag to compare

RollDev 0.4.1 Release Notes

🔧 Improvements

🛠️ Magento 2 Init Fixes

Resolved a Magento 2.4.8+ 2FA configuration bug in magento2-init

Implements workaround for Adobe Commerce core issue #39836 where using
--lock-env with twofactorauth/general/force_providers causes DuoSecurity
provider to fail due to array vs string storage mismatch in env.php.


Command Help: roll magento2-init --help
Full Changelog: 0.4.0...0.4.1

0.4.0

16 Jun 12:00

Choose a tag to compare

RollDev 0.4.0 Release Notes

🆕 New Feature

🎛️ RedisInsight GUI Support (Docker Stack)

RollDev now includes RedisInsight, a powerful GUI tool for Redis database management.

What’s new:

  • RedisInsight Enabled by Default in:

    • Laravel
    • Magento 2
    • Shopware
    • Symfony
    • TYPO3
  • Accessible via Browser: Automatically available in the Docker stack, no manual setup required.

  • Centralized Management: Monitor, inspect, and debug Redis data visually.

🔧 Improvements

🔁 Redis Configuration Standardized

  • Switched to semantic versioning for Redis (8.0 instead of 8) for improved version detection and Docker image handling.
  • Dragonfly/Valkey fallback removed: Standard Redis is now used across all Magento 2 setups for maximum compatibility.
  • Cleaner and more robust Redis configuration logic in all environments.

🔍 OpenSearch & Elasticsearch Version Handling Improved

  • Unified version handling for OpenSearch vs Elasticsearch
  • Cleaned up redundant version flags and improved substitution logic in Docker services
  • Reduces confusion and improves maintainability

🛠️ Magento 2 Init Fixes

  • Several bugfixes in magento2-init:

    • Fixed Redis compatibility for Magento by always defaulting to standard Redis
    • Improved version parsing and error handling
    • Better logic flow for service bootstrapping

🎯 Benefits

  • Visual Redis Management: Debugging sessions and cache issues is now far easier
  • Improved Stability: Consistent Redis stack for all supported frameworks
  • Better Developer Experience: Cleaner configuration, fewer surprises, more control

Command Help: roll magento2-init --help
Full Changelog: 0.3.2...0.4.0

0.3.2

11 Jun 08:16

Choose a tag to compare

RollDev 0.3.2 Release Notes

🆕 New Feature

magento2-init – Automated Magento 2 Project Setup

A brand-new command that fully automates the Magento 2 project setup process.

Usage:

roll magento2-init <projectname> [version]

Features:

  • Version Support: Magento 2.4.5+ including all patch versions (e.g., 2.4.7-p3)

  • Smart Compatibility: Automatically selects the correct PHP, MariaDB, Elasticsearch/OpenSearch, Redis, RabbitMQ, and Composer versions

  • OpenSearch Support: Full support for OpenSearch with Magento 2.4.8+

  • 10-Step Automation:

    1. Environment initialization
    2. SSL certificate generation
    3. Docker services startup
    4. Composer installation
    5. Database configuration
    6. Redis configuration
    7. Search engine setup
    8. Magento installation
    9. Admin user creation + 2FA
    10. Service health checks

Examples:

roll magento2-init mystore              # Latest version
roll magento2-init mystore 2.4.7        # Specific version
roll magento2-init mystore 2.4.7-p3     # Patch version

🔧 Technical Details

  • Host Git Integration: Git operations run on the host machine for SSH key access
  • Fallback Mechanism: Automatically falls back to Elasticsearch 7 if OpenSearch fails
  • Service Verification: Health checks for database, search engine, and Redis
  • Variable Scope Fix: Embedded parameters in Bash commands for reliable execution

🎯 Benefits

  • Time Saving: Setup time reduced from hours to minutes
  • Error Reduction: Automated configuration eliminates manual mistakes
  • Consistency: Identical setup for all developers
  • Version Flexibility: Supports Magento 2.4.5 and newer, including patch releases

Command Help: roll magento2-init --help


Full Changelog: 0.3.1...0.3.2