- Backend: sync_customer_extensions now sets installed_version=NULL when
extension is missing_on_server (previously only detected drift without
updating DB)
- Frontend: refresh button now calls /sync endpoint before reloading,
ensuring the dashboard reflects actual server state
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds extension sync that queries each customer's EspoCRM to compare
actually-installed extensions with what the platform DB tracks.
Updates platform DB on version mismatches and reports drifts to Mattermost.
n8n workflow ID: NXxBHm3qhWL3yHza (daily at 07:00)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Sort extensions by install order (HebrewLanguage first, then deps)
- Grey out extensions with missing dependencies (show lock icon + "נדרש: X")
- Checkbox selection for batch install with progress indicator
- "בחר הכל" button to select all installable extensions
- Server returns dependencies + install_order in customer API
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>