Commit Graph

14 Commits

Author SHA1 Message Date
chaim ad386f5cef feat: add username/password fields to customer form for Espo auth
Instead of manually entering base64, users can now type username and
password which auto-generates the Espo-Authorization header value.
Empty credentials on edit won't overwrite existing API key.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 09:20:40 +00:00
chaim a11ddb82a6 fix: sync now resets installed_version when extension removed from server
- 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>
2026-03-30 09:02:11 +00:00
chaim 36812af6e7 feat: add POST /sync endpoint + daily n8n drift check workflow
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>
2026-03-29 21:26:01 +00:00
chaim f028299693 feat: add DataMigration to MODULES, DEPENDENCIES, and INSTALL_ORDER 2026-03-28 19:59:16 +00:00
chaim 98db6899db feat: UI improvements - default to customers tab, refresh button, installed extensions first 2026-03-28 19:30:40 +00:00
chaim 814e5a182c fix: return 404 for missing assets instead of index.html fallback
Prevents MIME type mismatch when asset filenames change after rebuild.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 18:46:35 +00:00
chaim 22b05617d4 feat: install order, dependency blocking, batch install
- 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>
2026-03-26 18:44:56 +00:00
chaim eea011d68a fix: cancel button on form, edit customer, show installed/total count 2026-03-26 08:20:51 +00:00
chaim 72c3087dd0 redesign: apply Stitch design system — Heebo font, glass header, Material icons, editorial tables 2026-03-26 07:56:11 +00:00
chaim ccb467ebaa fix: show update button only when newer version available 2026-03-26 06:57:48 +00:00
chaim 4638763ee1 feat: structured extensions table in customer detail view
4 columns: name, installed version, available update, actions
Actions: install (if not installed), update + remove (if installed)
2026-03-26 06:50:35 +00:00
chaim 188c5fb878 fix: use multipart upload for Composer Registry (fixes 500 error) 2026-03-26 06:22:27 +00:00
chaim 8c6cd8a3ef fix: handle 409 Conflict in gitea_upload as 'exists' not error 2026-03-26 06:19:13 +00:00
chaim 5e0e5f1066 Extension Platform: API server + React dashboard
- Python API server with Gitea-based build (no local files needed)
- PostgreSQL on Coolify internal network
- React + Vite + Tailwind dashboard
- Endpoints: /publish, /deploy, /deploy-all, /api/*
- Dockerfile: multi-stage (Node build + Python runtime)
2026-03-26 04:53:01 +00:00