Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,45 @@ and this project adheres to

## [Unreleased]

## [2.3.0] - 2025-10-28

### Added

- **Campaign Tools Menu** - Automated campaign/promo branch management
- Create Promo Branch: One-command promo branch creation from shop/main
- Push Promo to Main: Automated PR creation to merge campaign content back
- End Promo: Cleanup and delete campaign branches
- List Active Promos: Show all active campaign branches across shops
- Implements Shopify's recommended branch-per-campaign workflow
- 11 comprehensive tests
- **Content Protection System** - Config-based content overwrite prevention
- Per-shop content protection settings (strict/warn/off modes)
- Global settings for default protection behavior (settings.json)
- STRICT mode: Blocks cross-shop content sync, requires 'OVERRIDE' confirmation
- WARN mode: Shows warning, requires explicit confirmation
- Verbose/quiet verbosity controls
- Tools → Content Protection menu for configuration
- Show Protection Status for all shops
- Enable/Disable protection per shop or for all shops
- Smart detection: Only blocks cross-shop (main → shop-a), allows within-shop (shop-a → shop-a)
- 14 comprehensive tests
- **Shop Health Check** - Diagnostic tool for verifying shop setup
- Check single shop or all shops
- Configuration validation (JSON, domains, branches)
- Credentials verification (file exists, tokens present, permissions)
- Git branch validation (existence, sync status)
- Content protection status display
- Actionable recommendations for issues
- Informational only (no auto-fix, always exits successfully)
- 8 comprehensive tests

### Changed

- **Content detection improved** - Now enforces protection based on shop config
- Integrates with content protection settings
- Shows appropriate warnings based on protection mode
- Better UX messaging (explains protection is working, not broken)

## [2.2.4] - 2025-10-28

### Add npm package versioning badges to README.md
Expand Down
106 changes: 96 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,14 @@ themes, or any existing Shopify theme that needs multi-shop capabilities.
- **⚡ Modern GitHub Flow** - Simple, PR-based development workflow
- **🧪 Interactive Testing** - Test against real Shopify preview themes

### 🛡️ Built-In Safeguards (v2.1.0+)

- **🚨 Content Detection** - Warns before overwriting shop-specific settings
### 🛡️ Built-In Safeguards

- **🚨 Content Protection** (v2.3.0+) - Config-based prevention of content
overwrites with strict/warn/off modes
- **🏥 Health Check** (v2.3.0+) - Comprehensive diagnostics for configuration,
credentials, and branches
- **🎯 Campaign Tools** (v2.3.0+) - Automated campaign lifecycle management with
one-command promo workflows
- **🔒 Security Audit** - `multi-shop audit` command checks permissions and
credentials
- **✅ Tests** - Unit, integration, security, E2E, and performance tests
Expand Down Expand Up @@ -263,26 +268,99 @@ When you merge features to main:
3. **Shop teams create final PRs**: `shop-a/staging → shop-a/main`,
`shop-b/staging → shop-b/main`, etc.

### Campaign Management (Per Shop)
### Campaign Management (Per Shop) - v2.3.0+

**New Campaign Tools Menu** automates the entire campaign lifecycle:

```bash
# Create promo for specific shop
# 1. Create promo branch (one command)
pnpm run shop → Campaign Tools → Create Promo Branch
# → Select shop: shop-a
# → Promo name: summer-sale
# → Creates: shop-a/promo-summer-sale
# → Automatically creates and pushes: shop-a/promo-summer-sale

# Connect promo theme in Shopify admin (shop-a only)
# 2. Connect promo theme in Shopify admin
# → Add theme → Connect from GitHub → shop-a/promo-summer-sale

# Launch promo (shop-a only)
# 3. Customize in Shopify Theme Editor
# → Changes auto-sync back to promo branch

# 4. Launch promo
# → Publish theme or use Launchpad app

# Push content back to shop main (keeps shop-a/main current)
# 5. Push content back to main (one command)
pnpm run shop → Campaign Tools → Push Promo to Main
# → Select promo: shop-a/promo-summer-sale
# → Creates PR: shop-a/promo-summer-sale → shop-a/main

# 6. List all active campaigns
pnpm run shop → Campaign Tools → List Active Promos
# → Shows all promo branches across all shops

# 7. Clean up after campaign
pnpm run shop → Campaign Tools → End Promo
# → Select and delete finished promo branch
```

**Content Protection Integration:** Campaign content merges respect your Content
Protection settings, ensuring intentional content changes.

### Content Protection (v2.3.0+)

**Config-based safeguards** prevent accidental content overwrites:

```bash
# View protection status
pnpm run shop → Tools → Content Protection → Show Protection Status

# Configure individual shop
pnpm run shop → Tools → Content Protection → Configure Shop Protection
# → Select shop
# → Enable/Disable
# → Choose mode: strict (block), warn (confirm), or off
# → Choose verbosity: verbose or quiet

# Enable protection for all shops
pnpm run shop → Tools → Content Protection → Enable All Shops

# Configure global defaults
pnpm run shop → Tools → Content Protection → Global Settings
```

**Three Protection Modes:**

- **Strict** - Blocks cross-shop content syncs, requires 'OVERRIDE' to proceed
- **Warn** - Shows warning with file list, requires confirmation (default)
- **Off** - No protection, content syncs freely

**Smart Detection:** Distinguishes between risky cross-shop operations
(`main → shop-a`) and safe within-shop operations
(`shop-a/main → shop-a/staging`).

### Health Check (v2.3.0+)

**Diagnostic tool** verifies your shop configuration:

```bash
# Check single shop (detailed)
pnpm run shop → Tools → Health Check → Check Single Shop
# → Verifies: configuration, credentials, branches, content protection

# Check all shops (quick overview)
pnpm run shop → Tools → Health Check → Check All Shops
# → Shows status for every configured shop
```

**What it checks:**

- Configuration file validity (JSON, required fields, domains)
- Credentials existence, tokens presence, file permissions
- Git branch existence and sync status
- Content Protection status and settings

**Actionable recommendations** without auto-fixing - tells you exactly what
commands to run.

---

## 📋 Development Workflow
Expand Down Expand Up @@ -478,6 +556,14 @@ git branch --show-current
# Should be: feature/name or shop-a/name for auto-detection
```

**"Not sure what's wrong?" - Run Health Check (v2.3.0+)**

```bash
pnpm run shop → Tools → Health Check
# Comprehensive diagnostics with actionable recommendations
# Checks: config, credentials, branches, content protection
```

---

## 📚 Documentation
Expand Down Expand Up @@ -517,7 +603,7 @@ npm publish

## 📄 License

MIT © [ShopDevs](https://shopdevs.com)
MIT © [Brandt Milczewski](https://github.com/brandtam)

---

Expand Down
Loading
Loading