Skip to main content

Updating

Bob the Fixer includes an intelligent update system that automatically detects the update type and performs the appropriate actions.

Quick Update

Run the update script from your Bob the Fixer directory:

cd /path/to/bob-the-fixer
./update.sh

The script will:

  1. Fetch the latest release information from GitHub
  2. Compare versions
  3. Detect the update type from release metadata
  4. Perform the appropriate update

Update Types

Bob the Fixer uses three update types based on what changed in the release:

Core Update

What it does: Updates code only (no container changes)

CORE UPDATE
━━━━━━━━━━━
Updating code only (git pull + npm install + build)

✓ Pulling latest changes...
✓ Installing dependencies...
✓ Building project...
✓ Core update completed!

Actions performed:

  1. git pull origin main
  2. npm install
  3. npm run build

Downtime: None - AI CLIs continue working during update

Infrastructure Update

What it does: Updates code AND containers

INFRASTRUCTURE UPDATE
━━━━━━━━━━━━━━━━━━━━━
Updating code and containers

✓ Stopping containers...
✓ Pulling latest changes...
✓ Installing dependencies...
✓ Building project...
✓ Pulling new container images...
✓ Starting containers...
✓ Waiting for SonarQube to be ready...
✓ SonarQube is ready
✓ Infrastructure update completed!

Actions performed:

  1. Stop containers (preserves data volumes)
  2. git pull origin main
  3. npm install
  4. npm run build
  5. Pull new container images
  6. Start containers
  7. Wait for SonarQube to be ready (up to 180 seconds)

Downtime: Brief - SonarQube unavailable during container restart (typically 1-2 minutes)

Full Update

What it does: Shows migration guide for breaking changes

FULL UPDATE REQUIRED
━━━━━━━━━━━━━━━━━━━━

⚠️ This release contains breaking changes

Please follow these steps:

1. Save your current configuration:
cp .env .env.backup

2. Uninstall current version:
./uninstall.sh

3. Pull the latest code:
git pull origin main

4. Run the installer:
./install.sh

5. Restore any custom configuration from .env.backup

Why manual: Full updates include breaking changes that may require:

  • Data migrations
  • Configuration changes
  • Token regeneration
  • Schema updates

Command Line Options

Check for Updates

Check if an update is available without applying it:

./update.sh --check

Output:

Current version: v0.3.5
Latest version: v0.3.6

Update available: v0.3.5 -> v0.3.6
Type: core
Release: https://github.com/andrearaponi/bob-the-fixer/releases/tag/v0.3.6

Dry Run

See what would happen without executing:

./update.sh --dry-run

Output:

[DRY RUN] Would execute:
cd /path/to/bob-the-fixer
git pull origin main
npm install
npm run build

Force Update

Bypass the uncommitted changes check:

./update.sh --force
warning

Using --force will pull changes even if you have uncommitted modifications. Your local changes may be lost or cause merge conflicts.

Help

Show all available options:

./update.sh --help

Version Information

Check Current Version

The current version is stored in package.json:

node -p "require('./package.json').version"

Or check via the MCP server:

What version of Bob the Fixer am I running?

Minimum Version Requirements

Some updates have minimum version requirements. If your version is too old:

❌ Your version (0.2.0) is too old for this update
Minimum required version: 0.3.0
Please run a full reinstallation with ./install.sh

Update Process Details

How Update Type is Detected

Each GitHub release includes metadata in the release notes:

<!-- BOB_RELEASE_METADATA
{
"updateType": "core",
"minVersion": "0.3.0",
"breakingChanges": false,
"notes": "Performance improvements and bug fixes"
}
-->

The update script parses this metadata to determine:

  • updateType: core, infra, or full
  • minVersion: Minimum version required for this update
  • breakingChanges: Whether manual steps are needed
  • notes: Additional information
  • requiredActions: Specific actions users must take

What Gets Updated

ComponentCoreInfraFull
MCP Server Code
npm Dependencies
TypeScript Build
Container Images
Configuration Files
Tokens
Database Schema

Data Preservation

All update types preserve your data:

DataPreserved
SonarQube projects
Analysis history
Quality gate configuration
.env configuration
MCP registrations

Troubleshooting Updates

"Uncommitted changes detected"

# Option 1: Commit your changes
git add . && git commit -m "Local changes"

# Option 2: Stash your changes
git stash

# Option 3: Force update (careful!)
./update.sh --force

"Not in bob-the-fixer repository"

Make sure you're in the correct directory:

cd /path/to/bob-the-fixer
ls package.json # Should exist and contain "bob-the-fixer"

"SonarQube did not become ready"

After an infra update, if SonarQube doesn't start:

# Check container logs
podman logs bobthefixer_sonarqube

# Check container status
podman ps -a --filter "name=bobthefixer"

# Restart containers manually
podman-compose -p bobthefixer -f infrastructure/podman-compose.yml restart

"GitHub API error"

If you hit GitHub rate limits:

# Wait and retry
sleep 60 && ./update.sh

# Or check manually
curl -s https://api.github.com/repos/andrearaponi/bob-the-fixer/releases/latest | jq '.tag_name'

After Updating

Verify the Update

# Check version
node -p "require('./package.json').version"

# Check MCP server starts
node packages/core/dist/universal-mcp-server.js &
sleep 2
kill %1

# Check SonarQube (after infra update)
curl http://localhost:9000/api/system/health

Check AI CLI Registration

After updates, verify your AI CLI still has Bob the Fixer registered:

# Claude
claude mcp list

# Gemini
gemini mcp list

If missing, re-register:

claude mcp add bob-the-fixer node /path/to/bob-the-fixer/packages/core/dist/universal-mcp-server.js \
--scope user \
--env SONAR_URL=http://localhost:9000 \
--env SONAR_TOKEN=your-token

Automatic Updates

Currently, Bob the Fixer does not support automatic updates. We recommend:

  1. Subscribe to releases on GitHub for notifications
  2. Check periodically with ./update.sh --check
  3. Update regularly to get security fixes and improvements

Next Steps