Agent Zero
|
0692fce2e4
|
fix: RLS fail-closed migration + per-tenant startup code
|
2026-07-31 01:31:41 +02:00 |
|
Agent Zero
|
7fbbe420bd
|
fix: comprehensive system audit fixes (55+ issues)
Check Cross-Plugin Imports / check (push) Has been cancelled
CRITICAL:
- Fix SQL injection in prestart.sh (parameterized query)
- Fix secret key validation (always validate, not just production)
- Fix workspace model partial index bug (func.text -> text)
- Fix HealthResponse schema (add checks field)
- Fix Tenant import in permissions.py (NameError on every auth request)
- Fix README tech stack (React instead of Alpine.js)
- Delete broken test_cross_tenant_security_v2.py
- Add fail-closed RLS migration 0084 (48 tenant tables)
HIGH:
- Add GeneralRateLimitMiddleware for all API routes
- Add file type blocklist for DMS and attachment uploads
- Fix guest auth: Pydantic schema, tenant_slug required, CSRF bypass
- Fix CSRF bypass path matching (in -> endswith)
- Add worker healthcheck in docker-compose.yml
- Add ARQ max_tries=3 for job retries
- Fix 28 bare pass in mail services (-> logger.debug)
- Fix print() -> logger in main.py and ai_assistant
- Fix duplicate email handling (catch IntegrityError -> 409)
- Add session revocation (invalidate_all_user_sessions)
- Add resource limits to all containers
- Fix CORS default (localhost -> production domain)
- Fix SameSite=Lax -> Strict
- Fix Redis password visibility in healthcheck
- Fix npm vulnerabilities (19 -> 9)
- Fix Sidebar OOM (wildcard lucide import -> curated ICON_MAP)
MEDIUM:
- Localize ErrorBoundary to German
- Wire Mail.tsx save/delete filter to API
- Document system_notif plugin (no routes needed)
- Fix datetime.utcnow() -> datetime.now(UTC)
- Pin litellm version (>=1.0,<2.0)
- Move CSRF token from sessionStorage to in-memory
- Fix restore_backup error handling and transaction
- Fix Dms.tsx useEffect cleanup
- Add skip-to-content link for accessibility
- Add selectinload imports to 3 services
- Add .env.example missing variables
- Fix AppShell/TopBar/Sidebar test mocks
NEW TESTS:
- test_guest_auth.py (6 tests)
- test_user_service.py (8 tests)
- test_backup_service.py (5 tests)
NEW SCHEMAS:
- saved_filter, saved_view, user_preference, workspace, entity_policy
Tests: 22/22 PASSED
|
2026-07-31 00:58:05 +02:00 |
|
Agent Zero
|
076134b445
|
migration: add missing deleted_at columns to 9 TenantMixin tables (0083)
|
2026-07-30 10:16:26 +02:00 |
|
Agent Zero
|
8acc00c559
|
migration: add sensitivity column to custom_field_definitions (0082)
|
2026-07-30 09:27:04 +02:00 |
|
Agent Zero
|
d4ffbeca50
|
phase12: disable RLS on all system/auth/config/plugin tables (final migration)
|
2026-07-30 00:47:43 +02:00 |
|
Agent Zero
|
8833444dcb
|
phase12: disable RLS on audit_log and sessions (written during login)
|
2026-07-30 00:20:20 +02:00 |
|
Agent Zero
|
02af9ebaa2
|
phase12: disable RLS on all system/auth/config tables for crm_api startup
|
2026-07-30 00:15:58 +02:00 |
|
Agent Zero
|
42d004c2c9
|
phase12: disable RLS on automation tables (written at startup)
|
2026-07-30 00:06:43 +02:00 |
|
Agent Zero
|
0d7602db3a
|
phase12: disable RLS on tax_rates (startup table)
|
2026-07-29 23:42:25 +02:00 |
|
Agent Zero
|
1611b2450e
|
phase12: disable RLS on startup tables (system_settings, currencies, taxes, sequences, saved_filters, saved_views, webhooks)
|
2026-07-29 23:33:56 +02:00 |
|
Agent Zero
|
54c275580f
|
phase6: standardized event envelope (aggregate_type, aggregate_id, occurred_at, correlation_id, schema_version) + outbox_deliveries table
|
2026-07-29 22:50:27 +02:00 |
|
Agent Zero
|
bd50a85483
|
fix: add created_at/updated_at to workspace_users (TenantMixin inherits TimestampMixin)
|
2026-07-29 18:40:09 +02:00 |
|
Agent Zero
|
8094b6d13f
|
fix: add deleted_at to workspace tables (TenantMixin includes SoftDeleteMixin)
|
2026-07-29 18:38:06 +02:00 |
|
Agent Zero
|
2423053477
|
phase5: workspace backend — models, service, routes, migration 0072
|
2026-07-29 18:32:35 +02:00 |
|
Agent Zero
|
8322adb73f
|
phase4: entity_attachments table + DMS unified storage + attachment service rewritten + download via DMS
|
2026-07-29 17:52:55 +02:00 |
|
Agent Zero
|
840795b5b9
|
phase2: 4 DB roles (crm_migration/api/worker/auth) + docker-compose updated + GRANT USAGE + RLS verified with unprivileged role
|
2026-07-29 16:49:09 +02:00 |
|
Agent Zero
|
8da803156e
|
phase1: RLS simplified to tenant isolation only + canAccess fallback removed + useUserPermissions hook + security kernel docs
|
2026-07-29 16:36:51 +02:00 |
|
Agent Zero
|
0448962d08
|
fix: visibility.py Defense-in-Depth tenant_id filter + entity_permissions deleted_at migration + cross-tenant tests
|
2026-07-29 16:12:04 +02:00 |
|
Agent Zero
|
f1a2484055
|
fix: WeasyPrint URL fetcher + attachment improvements + webhook error propagation + WebSocket conversation check + RLS disabled on system tables (bootstrap fix)
Check Cross-Plugin Imports / check (push) Has been cancelled
|
2026-07-29 13:19:21 +02:00 |
|
Agent Zero
|
0f4e51c4b3
|
fix: consumer_inbox table for outbox idempotency + tenant_plugin_activation table
|
2026-07-29 12:49:15 +02:00 |
|
Agent Zero
|
de53bcff25
|
fix: guest_sessions Redis index for revocation + RLS on all tenant tables (migration 0064)
|
2026-07-29 12:46:50 +02:00 |
|
Agent Zero
|
bfd4ff8dd5
|
fix: migration 0061 — remove non-existent tables from RLS list
|
2026-07-29 12:40:15 +02:00 |
|
Agent Zero
|
e1d522c6a2
|
fix: missing notification entity_type/entity_id migration (0063)
|
2026-07-29 12:35:44 +02:00 |
|
Agent Zero
|
8539a6402c
|
P1.6: secure guest invitation tokens (secrets.token_urlsafe + SHA-256 hash + one-time use + session revocation)
|
2026-07-29 12:30:00 +02:00 |
|
Agent Zero
|
26bf8d3a31
|
P0+P1 fixes: RCE sandbox, SQL injection, RLS tenant isolation, DB roles, test syntax, attachment, permission registry, membership check
Check Cross-Plugin Imports / check (push) Has been cancelled
|
2026-07-29 12:28:08 +02:00 |
|
Agent Zero
|
680d5ab6f1
|
fix: migration 0058 checkconstraint + all sprint 20-23 deployed
|
2026-07-29 03:10:26 +02:00 |
|
Agent Zero
|
24690fb674
|
sprint20-23: tests + documentation + guest access + infrastructure + migrations 0059
|
2026-07-29 02:53:37 +02:00 |
|
Agent Zero
|
ddf73ee42e
|
sprint14-19: ABAC UI rule editor + permission templates + bulk share + analytics + delegation + resolution strategies + migrations 0056-0058
|
2026-07-29 02:47:03 +02:00 |
|
Agent Zero
|
e0003b9384
|
sprint12+13: zentrale rechte settings page + ABAC engine backend (model, migration 0055, service, routes)
|
2026-07-29 02:42:16 +02:00 |
|
Agent Zero
|
b7ccd9e6c3
|
sprint8: fix migration 0054 — skip existing owner_id columns
|
2026-07-29 02:35:32 +02:00 |
|
Agent Zero
|
958e412152
|
sprint8: plugin entities owner_id migration 0054 + calendar owned_mixin
Check Cross-Plugin Imports / check (push) Has been cancelled
|
2026-07-29 02:33:16 +02:00 |
|
Agent Zero
|
88c04286af
|
sprint6+7: permission notifications + audit trail + notification entity filter + mail account permissions + migration 0053
Check Cross-Plugin Imports / check (push) Has been cancelled
|
2026-07-29 02:18:17 +02:00 |
|
Agent Zero
|
48647a58e0
|
sprint1: set_user_context + RLS policies on contacts + folder ACL migration 0051+0052
|
2026-07-29 01:30:25 +02:00 |
|
Agent Zero
|
5afa1fa927
|
sprint1: entity_permissions table + owned_mixin + universal permission service + API + migrations 0049+0050
|
2026-07-29 01:28:13 +02:00 |
|
Agent Zero
|
cc021cda99
|
feat: folder permissions (ACLs) - share folders with users/groups, inherit to subfolders, permission dialog UI
|
2026-07-28 23:58:19 +02:00 |
|
Agent Zero
|
0a92717710
|
fix: alembic down_revision 0046 not 0046_plugin_allowlist
|
2026-07-28 14:41:04 +02:00 |
|
Agent Zero
|
58b163ba78
|
feat: saved_views backend API + model + migration + frontend hooks
|
2026-07-28 14:36:52 +02:00 |
|
Agent Zero
|
98eb1d0d89
|
feat: Plugin-System Umbau — 6 Phasen komplett abgeschlossen
Check Cross-Plugin Imports / check (push) Has been cancelled
Phase 1: Contracts konsequent nutzen
- 12 neue contracts.py erstellt (alle 19 Plugins haben jetzt contracts)
- 4 bestehende contracts.py an zentrale ContractRegistry angepasst
- Alle 19 Plugins haben on_deactivate mit Contract-Unregister
- 0 echte problematische INTER-Plugin Imports
Phase 2: Hooks/Filters-System
- app/core/hooks.py (HookRegistry mit actions + filters)
- 15 Hook-Punkte in Core-Services (contact, auth, mail, calendar, user, dms)
- BasePlugin.on_deactivate meldet alle Hooks ab
Phase 3: Plugin-Isolation
- scripts/check_cross_plugin_imports.py (Linting-Regel)
- .github/workflows/check-cross-plugin-imports.yml (CI/CD)
- .pre-commit-cross-plugin.yaml (Pre-commit Hook)
- 155 Dateien geprueft, 0 Verstoesse
Phase 4: Plugin-Versioning
- app/plugins/semver.py (SemVer mit Parse, Compare, Pre-release)
- migration_runner.py erweitert: run_migration_down, rollback_to_version
- manifest.py: min_app_version Feld
- registry.py: App-Version-Compatibility-Check bei Installation
- GET /api/v1/plugins/updates Endpoint
Phase 5: Marketplace-Vorbereitung
- app/plugins/signature.py (Ed25519 Signatur-Validierung)
- app/plugins/quarantine.py (Plugin-Quarantine mit Validierung)
- app/models/plugin_allowlist.py + Migration 0046
- manifest.py: author, license, homepage, icon, screenshots, changelog, marketplace_tags, price
- registry.py: discover_external(), discover_all()
- POST /api/v1/plugins/install-marketplace (deaktiviert)
Phase 6: Manifest-Anpassung
- manifest.py: 12 neue Felder + SemVer/Hook-Name Validierung
- MANIFEST_SCHEMA_DOC aktualisiert
- Alle 19 Plugin-Manifeste aktualisiert
- Frontend PluginUiManifest Typ erweitert
Zusaetzliche Bug-Fixes:
- test_sample-Modul erstellt
- conftest.py Deadlock-Prevention
- SESSION_COOKIE_SECURE=true
- dump.rdb aus Git entfernt + .gitignore
- backup.py datetime.utcnow -> func.now()
- system_settings.py JSONB-Import nach oben
- tax.py Mapped[float] -> Mapped[Decimal]
- notification.py type_key-Laengen vereinheitlicht
Tests: 91 neue Tests, alle bestanden
|
2026-07-26 23:15:34 +02:00 |
|
Agent Zero
|
a8b0043756
|
Fix: Migration 0044 down_revision must be 0043_backups not 0043
|
2026-07-26 21:41:23 +02:00 |
|
Agent Zero
|
604a2b7648
|
Phase 2: Fix high-priority security and stability issues (H1-H7)
H1: Sanitize error endpoint context (strip tokens/passwords, limit depth/size)
H2: Rate limiter IP spoofing fix (trusted proxy CIDR check for X-Forwarded-For)
H3: CSRF middleware uses Redis singleton instead of per-request connection
H4: WebSocket origin verification added to both kommunikation and ai_ui_control
H5: Storage path traversal protection, get_url() returns relative URL not filesystem path
H6: Security headers middleware (HSTS, X-Content-Type-Options, X-Frame-Options, CSP, Referrer-Policy)
H7: Forward-repair migration 0045 for databases that ran original 0021/0027
Also: add trusted_proxy_cidrs to config, add verify_ws_origin to auth
|
2026-07-26 20:49:15 +02:00 |
|
Agent Zero
|
5ec1fc9b05
|
Phase 1: Fix all critical release blockers (B1-B10)
B1: Remove duplicate get_redis() — singleton no longer overwritten
B2: Plugin routes now enforce activation status via require_active_plugin()
B3: Fix UploadFile ForwardRef error — remove functools.wraps from wrap_plugin_route
B4: DMS upload uses true streaming via save_stream() instead of RAM accumulation
B5: Worker on_startup registers plugin event handlers + webhook dispatcher
B6: Implement send_password_reset_email job, remove raw token logging
B7: Webhook SSRF protection (IP validation, no redirects), secret removed from response
B8: RLS repair migration 0044 + separate crm_runtime DB user (NOSUPERUSER, NOBYPASSRLS)
B9: Fix .env.docker.example AUTH_SECRET → SECRET_KEY
B10: Remove Redis default password, remove exposed DB/Redis ports
Also: add frontend_url to config, add SMTP settings to .env.docker.example,
update prestart.sh to use MIGRATION_DATABASE_URL for alembic.
|
2026-07-26 20:45:42 +02:00 |
|
Agent Zero
|
0571cc8193
|
Fix: Add updated_at and deleted_at columns to backups migration (TenantMixin)
|
2026-07-26 03:22:40 +02:00 |
|
Agent Zero
|
79ece0fe2e
|
Phase 4: Webhooks, Backup/Restore UI, Onboarding/Tutorial
- Webhooks Backend: model, schema, service (HMAC-SHA256, httpx), routes, event bus dispatcher, migration 0042
- Webhooks Frontend: SettingsWebhooksPage (CRUD, test button, event multi-select), API client
- Backup/Restore Backend: model, schema, service (pg_dump/pg_restore), routes (admin-only), migration 0043
- Backup/Restore Frontend: SettingsBackupPage (create, list, restore dialog with RESTORE confirmation, auto-refresh)
- Onboarding: OnboardingTour (8 steps, custom CSS overlay), WelcomeDialog, onboardingStore (zustand + localStorage)
- Onboarding integrated into AppShell
- Routes: /settings/webhooks, /settings/backup registered
- Settings nav: Webhooks, Backup & Restore entries added
- Migration conflict fixed: 0042_webhooks → 0043_backups chain
|
2026-07-26 03:17:40 +02:00 |
|
Agent Zero
|
a7e3890634
|
Phase 2: Tags UI, Custom Fields UI, Notifications Bell
- Tags UI: TagsPage (CRUD, color picker), TagBadge, TagSelector (multi-select, inline creation)
- Custom Fields Backend: model, schema, service, routes, migration 0041
- Custom Fields Frontend: CustomFieldsPage (definitions CRUD), CustomFieldRenderer (dynamic field rendering)
- Custom Fields: _collect_custom_field_definitions() extended to merge DB definitions with plugin definitions
- Notifications Bell: NotificationBell (30s polling, unread badge), NotificationDropdown, NotificationItem
- NotificationBell integrated into TopBar
- Routes: /tags, /settings/custom-fields registered
- Settings nav: Custom Fields entry added
- Menu items: Tags added to automation plugin manifest
|
2026-07-26 03:02:25 +02:00 |
|
Agent Zero
|
054ecb1c91
|
Fix: register plugin routes in create_app() not lifespan(); add status column to contacts migration 0039; add updated_at to user_tenants migration 0037
|
2026-07-26 00:42:31 +02:00 |
|
Agent Zero
|
3828e1b029
|
Fix: drop RLS policy on users before dropping tenant_id column in migration 0037
|
2026-07-25 21:29:17 +02:00 |
|
Agent Zero
|
f6a099390e
|
Fix: remove updated_at from user_tenants INSERT in migration 0037
|
2026-07-25 21:24:30 +02:00 |
|
Agent Zero
|
f8f0d3e52a
|
Fix: use pg_index.indisunique instead of pg_indexes.unique in migration 0037
|
2026-07-25 21:19:47 +02:00 |
|
Agent Zero
|
2e9fafc289
|
Fix: correct SQL quoting for unique keyword in migration 0037
|
2026-07-25 21:15:20 +02:00 |
|
Agent Zero
|
36fc5b868e
|
Fix: SQL syntax error in migration 0037 (unique keyword quoting)
|
2026-07-25 21:11:11 +02:00 |
|