Commit Graph

44 Commits

Author SHA1 Message Date
Agent Zero 38df597f11 feat(#359): W4a Phase 2 — zentraler Import/Export-Dialog (Frontend)
- ImportExportDialog.tsx (neu): Modal lg/xl nach bestehendem ui/Modal-Muster
- Export-Tab: Formatauswahl (csv/xlsx/json), Download, Fehler-Handling
- Import-Tab: 4 Schritte (Datei -> Mapping -> Dry-Run -> Ausführung+Report),
  Mapping-Vorschau mit Modul-Heuristik, Background-Job-Polling ab 1000 Zeilen
- i18n: 24 importexport.*-Keys in de.json + en.json (keine hardcoded Strings)
- Integration: ContactsList Toolbar-Button (contacts:read-Gate, Upload-Icon,
  entityType=contacts vorgewählt) über bestehendes pluginToolbarStore-Muster

Gates: Vitest 12/12 (routePermissions + importExportDialog), tsc exit 0,
Production-Build exit 0 (vor Commit). 6 Failures in contacts/shell Suiten
als Vorbestand bewiesen (Stash-Test: identisch auf clean HEAD f27f047).

fixes #359 (Phase 2)
2026-08-27 21:34:13 +02:00
Agent Zero 66c11d3d64 revert(frontend): Frontend auf letzten funktionierenden Stand 5680179 zurückgesetzt — i18n-Massen-Batch brach Dashboard-Shell in Produktion; Render-Loop-Fix und DSGVO-Antrags-UI liegen sicher in Historie für kontrollierten Wiedereinspiel 2026-08-27 09:14:21 +02:00
Agent Zero 4cb5298768 feat(i18n): migrate hardcoded German strings to t() across 104 components/pages — AST-based batch with re-parse gate, 423 new de.json keys; tsc clean; vitest failures byte-identical to clean-tree baseline (pre-existing) 2026-08-27 01:43:06 +02:00
Agent Zero fdabd2e74c fix(frontend): E2E-Test-Suite vollständig grün machen
- Robuster gegen undefined API-Daten in Mail, ContactDetail, ContactsList, Settings, Sidebar
- E2E-Mocks korrigiert für Kontakt-Detail, Mail-Liste/Folders und Plugin-Toggle
- Auth-Store mit persist-Middleware für E2E-Login
- test-results/ in .gitignore aufgenommen

Playwright E2E: 34/34 passed
2026-08-07 22:03:11 +02:00
Agent Zero 7903d719b7 feat: Mail FilterPanel, SortPanel, GroupPanel like Contacts + remove saved-filters button from Contacts and Mail 2026-07-30 13:20:45 +02:00
Agent Zero 02e188dfa2 fix: customFieldDefs.items optional chaining to prevent crash on empty response 2026-07-30 09:35:32 +02:00
Agent Zero ba0c4af42f fix: ContactsList canAccess fallback + ContactFolderTree error handling with toast 2026-07-30 02:56:40 +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 0cebd23e3b fix: remove TopBar quick-create button + canAccess fallback in ContactDetail + ContactDetailPage + ContactsList + duplicate import fix 2026-07-29 10:33:31 +02:00
Agent Zero 52a5c347de sprint2: frontend permission checks for ContactDetail + ContactsList + Field-Level UI 2026-07-29 01:56:07 +02:00
Agent Zero 784a771039 feat: column visibility, bulk actions, custom sort drag-drop, custom fields in filter/sort/group, mobile optimization 2026-07-28 23:14:15 +02:00
Agent Zero 9681827395 fix: saved filters now persistent via API (was local state) 2026-07-28 21:32:29 +02:00
Agent Zero 8cf12645f7 fix: wider middle column, narrower detail pane, horizontal scrollbar in table view 2026-07-28 15:31:22 +02:00
Agent Zero dbf804f0e3 feat: table view overhaul - drag resize, drag reorder, multi-sort headers, tree grouping 2026-07-28 15:21:03 +02:00
Agent Zero 58b163ba78 feat: saved_views backend API + model + migration + frontend hooks 2026-07-28 14:36:52 +02:00
Agent Zero fa28e67fb6 fix: standard view resets everything including search, multiSelectFolders, activeViewId 2026-07-28 14:27:28 +02:00
Agent Zero 69c1962995 feat: SaveViewDialog with selectable components (folder, view, filter, group, sort) 2026-07-28 14:09:15 +02:00
Agent Zero cd1e15eb09 feat: save/load/delete filters directly in FilterPanel dropdown 2026-07-28 13:59:15 +02:00
Agent Zero 2796bebb12 style: remove light blue bg, bold text, keep dark icon block 2026-07-28 13:35:23 +02:00
Agent Zero 24d6da6e89 style: accordion headers - light blue bg with dark blue icon block (rounded) 2026-07-28 13:01:21 +02:00
Agent Zero 7462361874 style: accordion headers kräftig wie sidebar buttons (bg-primary-600, white text, 2px padding) 2026-07-28 12:55:10 +02:00
Agent Zero 0ce3b8e4d1 style: accordion headers as rounded buttons (bg-primary-50, text-primary-700, rounded-md) 2026-07-28 12:52:02 +02:00
Agent Zero 8e475ef248 style: accordion headers as system-colored buttons (bg-primary-600, white text) 2026-07-28 12:47:25 +02:00
Agent Zero 65bb9c9866 fix: print and open-standalone icon-only, right-aligned in toolbar 2026-07-28 12:42:49 +02:00
Agent Zero 78738f5aa9 feat: folder multi-select mode with checkboxes, shows contacts from multiple folders 2026-07-28 12:22:30 +02:00
Agent Zero 77284cbf10 feat: custom views accordion - save/apply/delete named views with filter+sort+group config 2026-07-28 12:14:45 +02:00
Agent Zero 5f02330b2f feat: left panel accordions (Views + Folders), remove middle filter bar 2026-07-28 12:09:02 +02:00
Agent Zero 05cc51609b feat: GroupPanel + toolbar reorder (New, View, Search, Filter, Sort, Group) 2026-07-28 10:34:30 +02:00
Agent Zero 11ffffcb44 feat: SmartSuite-style SortPanel with multi-field priority sorting, all contact fields 2026-07-28 10:26:22 +02:00
Agent Zero e95875464b feat: SmartSuite-style FilterPanel with multi-condition AND/OR, all contact fields, context-sensitive ordering 2026-07-28 09:19:02 +02:00
Agent Zero 7962d34fcf toolbar: unified filter+sort dropdown with sections, fixed positioning, iconOnly support 2026-07-28 02:16:03 +02:00
Agent Zero 722335c923 contacts toolbar: consolidate views and filters into dropdowns 2026-07-28 00:45:55 +02:00
Agent Zero 719ee251f2 fix: close remaining security gaps, test fixes, frontend integration, event bus
Check Cross-Plugin Imports / check (push) Has been cancelled
- RCE: move _check_dangerous_imports() BEFORE exec_module() in plugins.py
- verify_ws_origin: reject empty Origin header when CORS configured
- Test: ai_app fixture with permission_registry init for ai_assistant
- Test: login_client sets CSRF token + Origin as client default headers
- Test: SESSION_COOKIE_SECURE=false override + get_settings.cache_clear()
- Test: asyncio_default_test_loop_scope=session fixes event loop closed
- Test: fix 15 assertions (paths, variables, auth expectations)
- Frontend: integrate SavedFilterBar in ContactsList, Mail, Calendar
- Frontend: integrate TagSelector in ContactsList, Mail, Calendar
- Event Bus: add 4 subscribers in system_notif (conversation/participant/reaction)
- Docs: update all analysis reports and FIX-PLAN-V2 to current state
2026-07-27 12:45:45 +02:00
Agent Zero 47dfdfb794 fix: ContactFolderTree drag-drop removed, dropdown menu with rename/color/pin/delete; ContactsList toolbar moved to plugin toolbar 2026-07-27 09:47:22 +02:00
Agent Zero a3a5a10514 Phase 1: Workflows UI, Dedup/Merge UI, Import/Export UI, Print/PDF
- Workflows UI: full page with definitions/instances tabs, step editor, instance detail with approve/reject
- Dedup/Merge UI: duplicate detection, side-by-side comparison, field-level merge dialog, merge history
- Import/Export UI: import wizard (dry-run preview), export panel (CSV/XLSX), backend export route added
- Print/PDF: PrintButton component, print.css, integrated in Contacts/Calendar/Reports/ContactDetail
- Backend: GET /api/v1/export endpoint, export_companies_csv() service function
- Routes: /workflows, /contacts/dedup, /import-export registered
- Menu items: Workflows, Import/Export, Duplikate added to automation plugin manifest
- IMPLEMENTATION_PLAN.md: audit-corrected plan for all 14 remaining features
2026-07-26 02:35:44 +02:00
Agent Zero 868bb274ef feat: standalone buttons for all plugin pages + window system for modals
Standalone buttons:
- Add ExternalLink button to Dms, Calendar, Mail, ContactsList toolbars
- Create standalone pages for each (no sidebar, full screen)
- Add standalone routes outside ProtectedRoute

Window system for modals:
- AppointmentModal -> AppointmentEditForm + openWindow()
- ComposeModal -> MailComposeForm + openWindow()
- FilePreviewModal -> FilePreviewContent + openWindow()
- Calendar, Mail, Dms use openWindow() instead of modal state
2026-07-25 00:21:37 +02:00
Agent Zero 35e87b5d51 feat: window management system with minimize, fullscreen, and AI chat split
- Window manager store (Zustand) for managing open/minimized/fullscreen windows
- Window component with header controls: KI-Chat toggle, fullscreen, minimize, close
- AI chat panel with streaming chat via existing /ai/sessions API
- WindowContainer renders all non-minimized windows
- TopBar shows minimized windows as clickable pills
- ContactEditForm extracted from ContactEditModal for window rendering
- ContactsList and ContactDetailPage use openWindow() instead of modal state
- Draggable windows with z-index management
2026-07-24 23:42:53 +02:00
Agent Zero 182af355d1 feat(5.22): Saved Searches / Smart Lists — reusable filters for list views
- SavedFilter model with TenantMixin (name, entity_type, filter_criteria JSONB, user_id)
- Routes: GET/POST /saved-filters, DELETE /saved-filters/{id} with RBAC
- Alembic migration 0029_saved_filters creates saved_filters table
- Frontend: SavedFilters.tsx component with save/load/delete UI
- Frontend: api/savedFilters.ts with React Query hooks
- Integrated into ContactsListPage as example
- i18n keys for savedFilters.* in de.json and en.json
- Tests: test_saved_filters.py (9 tests) + SavedFilters.test.tsx (3 tests)
- Registered SavedFilter in conftest.py
2026-07-23 23:44:50 +02:00
Agent Zero 879106c4eb Phase 1C: Frontend unified contact UI 2026-07-23 17:17:32 +02:00
Agent Zero 4f8cda1566 Phase 0.2: migrate remaining SVGs to lucide-react icons 2026-07-23 03:21:05 +02:00
Agent Zero 29202325a6 feat: Kontakt-Ordner mit Drag&Drop Baum (wie KI-Chat Sidebar)
- Backend: ContactFolder model (hierarchisch, parent_id, sort_order)
- Migration 0022: contact_folders Tabelle + folder_id FK auf contacts
- CRUD Routes: /api/v1/contact-folders (list, create, update, delete, reorder)
- Move Contact API: /api/v1/contact-folders/contacts/{id}/move
- folder_id Filter in contacts list API
- Frontend: ContactFolderTree mit Baum-Struktur, Drag&Drop, Kontext-Menü
- Kontakt-Personen-Icon statt Ordner-Symbol
- ContactList Items draggable (List/Table/Cards View)
- React Query Hooks für Folder CRUD + Move Contact
- Alle 266 Frontend-Tests passing
2026-07-20 01:33:44 +02:00
Agent Zero 4bc11efc25 UI: Suchfeld 10% niedriger, Kontakt-Baum mit Firmen/Privatpersonen Trennung, Toolbar vereinfacht (Sort+View Toggle) 2026-07-20 00:25:58 +02:00
Agent Zero 3177daf47f Frontend: unified 3-column contacts page (folder tree | list/table/cards | detail), all Rentman fields, ContactPerson CRUD, removed old Contact/Company pages 2026-07-19 21:30:26 +02:00
leocrm-bot 700b7a71ad T07b: frontend feature pages — companies + contacts + settings + audit + dashboard + search
- 11 new feature pages (CompaniesList/Detail/Form, ContactsList/Detail/Form,
  SettingsProfile/Roles/Users, AuditLog, GlobalSearchResults)
- 3 page updates (Dashboard with StatCard+ActivityFeed, Settings with tree nav+Outlet,
  TopBar with SearchDropdown)
- 13 new routes in routes/index.tsx
- i18n updates (de.json + en.json) with companies/contacts/settings/audit/search keys
- 12 new test files + 2 existing test fixes (TopBar, AppShell)
- 7 shared components (DataGrid, Tabs, SearchDropdown, CsvImportDialog, StatCard,
  ActivityFeed, UnsavedChangesGuard)
- 16 new API hooks in hooks.ts
- Verification: 141 tests pass, build succeeds, tsc --noEmit clean
2026-06-29 11:01:39 +02:00