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:
- Fetch the latest release information from GitHub
- Compare versions
- Detect the update type from release metadata
- 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:
git pull origin mainnpm installnpm 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:
- Stop containers (preserves data volumes)
git pull origin mainnpm installnpm run build- Pull new container images
- Start containers
- 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
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, orfullminVersion: Minimum version required for this updatebreakingChanges: Whether manual steps are needednotes: Additional informationrequiredActions: Specific actions users must take
What Gets Updated
| Component | Core | Infra | Full |
|---|---|---|---|
| MCP Server Code | ✓ | ✓ | ✓ |
| npm Dependencies | ✓ | ✓ | ✓ |
| TypeScript Build | ✓ | ✓ | ✓ |
| Container Images | ✓ | ✓ | |
| Configuration Files | ✓ | ||
| Tokens | ✓ | ||
| Database Schema | ✓ |
Data Preservation
All update types preserve your data:
| Data | Preserved |
|---|---|
| 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:
- Subscribe to releases on GitHub for notifications
- Check periodically with
./update.sh --check - Update regularly to get security fixes and improvements
Next Steps
- Installation - Installation guide
- Troubleshooting - Common issues
- SonarQube Integration - All available tools