Agent Zero
a8331fbc2b
Phase 2: Code-Splitting + Virtual Scrolling (Tasks 2.1-2.7)
2026-07-23 12:00:34 +02:00
Agent Zero
0c14b06b67
Fix: JSX syntax error in ProactiveAISettings.tsx (missing backtick in className)
2026-07-23 11:38:42 +02:00
Agent Zero
ec81940178
Phase 0 Complete: Tasks 0.7-0.20
...
- 0.7: UI-Design-Richtlinien (docs/ui-design-guidelines.md, 535 lines)
- 0.8: Theme-Customization Backend (4 theme fields, migration 0023)
- 0.9: Theme-Customization Frontend (SettingsTheme.tsx, themeStore.ts, live preview)
- 0.10: RBAC-Audit (4 plugins secured, 53 routes with require_permission)
- 0.11: LiteLLM-Cleanup (llm_client.py migrated from httpx to litellm)
- 0.12: KI-Agent-Framework docs (plugin-development-guide.md, agent_capabilities field)
- 0.13: Heartbeat configurable (ProactiveSettings, migration 0024, frontend UI)
- 0.14: Unified Search Field-Level RBAC (resolve_permissions + filter_fields_by_permission)
- 0.15: Undo/History-System (EntityHistory model, service, routes, migration 0025, HistoryViewer)
- 0.16: Storage Backend (LocalStorage + S3Storage, DMS/attachments/mail updated)
- 0.17: Import/Export unified Contact fields (firstname, surname, email_1, phone_1)
- 0.18: .gitignore & Config-Cleanup (webui→frontend, python-jose removed, .env untracked)
- 0.19: Mail-Salt Security-Fix (per-account random salt, migration 0026)
- 0.20: AGPL replaced (PyMuPDF→pypdf, OnlyOffice→Collabora, LICENSE + THIRD_PARTY_LICENSES.md)
2026-07-23 08:42:26 +02:00
Agent Zero
3d06cb2353
Phase 0.5+0.6: consolidate store dirs and save frontend gap analysis
...
- 0.5: Moved calendarStore.ts from stores/ to store/, removed stores/ dir, updated import
- 0.6: Saved complete frontend gap analysis as frontend-gap-analysis.md (176 lines)
- All stores now in src/store/ (5 stores: authStore, uiStore, commStore, pluginToolbarStore, calendarStore)
2026-07-23 05:12:24 +02:00
Agent Zero
75d2f884da
Phase 0.4: split hooks.ts into separate API modules
2026-07-23 05:11:16 +02:00
Agent Zero
57d18c1381
Phase 0.3: migrate date formatting to date-fns
2026-07-23 05:05:08 +02:00
Agent Zero
241850fddd
Phase 0.2: mark task 0.2 as done in PROGRESS.md
2026-07-23 04:55:58 +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
e9a5eee524
Phase 0.2: migrate UI component SVGs to lucide-react
...
- Button.tsx: Loader2 spinner
- EmptyState.tsx: FolderOpen default icon
- Modal.tsx: X close icon
- Pagination.tsx: ChevronLeft/ChevronRight
- Table.tsx: Loader2 loading spinner
- Toast.tsx: Check/X/AlertTriangle/Info + X close
- lucide-react v1.25.0 installed
- All 85 UI tests pass
- 2 pre-existing TSC errors in Dms.tsx (unrelated)
2026-07-23 00:47:23 +02:00
Agent Zero
3f2307ab54
Phase 0.1: update planning docs to current state
...
- codebase-vs-requirements.md: rewritten to reflect actual IST-stand (PostgreSQL, React, 12 plugins, unified contacts)
- security-review-phase2.md: added resolution summary for M-01/M-02/M-03/M-05/m-03/m-08
- architecture.md: added section 11 'Implementation Status' with what's built and what's missing
- MASTER-PLAN.md: comprehensive 754-line plan with 8 phases + Phase 3.5 (~590h total)
- PROGRESS.md: progress tracking file for agent work
2026-07-23 00:35:40 +02:00
Agent Zero
c2143eea19
debug: add startup print statements for plugin activation
2026-07-22 02:14:29 +02:00
Agent Zero
5116e79fb6
fix: AIParticipantHandler recognizes plugin rooms (locked_by=ai_assistant) as AI-active
2026-07-22 02:11:34 +02:00
Agent Zero
4a71297a1e
fix: add kommunikation dependency to ai_assistant and ai_proactive for correct load order
2026-07-22 02:04:52 +02:00
Agent Zero
ba06214efa
fix: quick-access button title matching for plugin rooms (Assistent, Live KI, System)
2026-07-22 01:56:25 +02:00
Agent Zero
69ef8bb7d9
fix: add __init__.py exports for kommunikation and system_notif plugins for discovery
2026-07-22 01:35:27 +02:00
Agent Zero
cc3ac9a43d
feat: Unified Messaging System — kommunikation plugin, AI/Proactive/System participants, MessageSidebar, Rich Content Renderer
...
Phase 1: Backend plugin kommunikation (13 files, 10 tables, REST API, WebSocket, RBAC, DMS Bridge, Participant Registry, Mini-App Registry, Search Provider)
Phase 2: AI plugins as participants (ai_assistant + ai_proactive dock as participants, heartbeat job)
Phase 3: system_notif plugin (system events → chat messages, pinned System room)
Phase 4: Frontend MessageSidebar (replaces AISidebar, same design, comm API client, WebSocket hook, commStore)
Phase 5: Rich Content Block Renderer (11 components: Markdown, HTML, Image, Audio, Video, File, ActionCard, ContactCard, MiniApp, BlockRenderer)
BasePlugin: added services property + _container in on_activate
2026-07-22 01:22:15 +02:00
Agent Zero
5980d38c66
AISidebar: add Team panel with users/groups and online status, add Chat panel placeholder
2026-07-21 23:11:17 +02:00
Agent Zero
650f6e6723
AISidebar: rename Proaktiv to Live KI, align icon strip border with TopBar, notifications as slim cards
2026-07-21 23:01:21 +02:00
Agent Zero
a4793991dd
AISidebar: replace horizontal tabs with icon strip layout, show active tab title below icons
2026-07-21 22:50:45 +02:00
Agent Zero
b30d1e9300
AISidebar: robot icon for AI, move notifications from TopBar to AISidebar with own tab and bell icon
2026-07-21 22:38:45 +02:00
Agent Zero
abdcd07b07
Sidebar toggle button: match sidebar background color
2026-07-21 22:28:05 +02:00
Agent Zero
719a4773d7
Align sidebar header border with TopBar border (h-[58px])
2026-07-21 22:21:54 +02:00
Agent Zero
5adaee25a0
Sidebar: narrower width (w-56), tree structure with expandable sub-menus for Calendar, Files, Email
2026-07-21 22:18:19 +02:00
Agent Zero
157ff7dfc9
Move Profile to own page, add Profile menu item in TopBar user menu
2026-07-21 22:08:32 +02:00
Agent Zero
a69035eebb
Calendar rewrite: 3-column layout with tree, multi-view (day/week/month/range), detail panel
2026-07-21 09:35:48 +02:00
Leopoldadmin
b16cd5e96f
Fix Bug 5: require groups:read permission for list_groups
2026-07-20 23:13:47 +00:00
Leopoldadmin
9142f8e1b2
Pass denied_permissions through in role create/update routes
2026-07-20 23:13:47 +00:00
Leopoldadmin
cb4c2173f6
Add denied_permissions and permission_version to Role schemas
2026-07-20 23:13:46 +00:00
Leopoldadmin
578f5dbff4
Add deleted_at field to Role model for soft-delete
2026-07-20 23:13:46 +00:00
Leopoldadmin
7bb72f6b9e
Fix Bug 3+4+6: permission_version bump, denied_permissions, soft-delete
2026-07-20 23:13:45 +00:00
Leopoldadmin
26850801fd
Fix Bug 1: Set UserTenant.role_id in create_user and sync in update_user
2026-07-20 23:13:45 +00:00
Leopoldadmin
044b948cf3
Add onRangeSelect handler for multi-selection support
2026-07-20 22:55:09 +00:00
Leopoldadmin
cfb52d3c69
Multi-selection: Shift+Click range, Ctrl/Cmd+Click toggle, rubber-band drag, mobile long-press
2026-07-20 22:55:09 +00:00
Leopoldadmin
b0c3941b7c
i18n: add DMS drag-and-drop keys (en)
2026-07-20 22:33:53 +00:00
Leopoldadmin
3163d77a30
i18n: add DMS drag-and-drop keys (de)
2026-07-20 22:33:52 +00:00
Leopoldadmin
864751a848
DMS: handleDropFiles + handleDropFolder callbacks
2026-07-20 22:33:52 +00:00
Leopoldadmin
f08933a97c
DMS: SourceTree drop targets + draggable folders
2026-07-20 22:33:51 +00:00
Leopoldadmin
d5a836c0c7
DMS: drag-and-drop for files + styling fixes
2026-07-20 22:33:51 +00:00
Agent Zero
e94e64ba6b
DMS redesign: 3-column explorer layout with toolbar, source tree, file details panel
...
- Add backend endpoints: GET /dms/files, GET /dms/folders/{id}/files
- New SourceTree component: sources (Meine Dateien, Geteilte Ordner, Externe Speicher)
- New FileExplorer component: 5 view modes (list, table, icons-sm/md/lg)
- New FileDetails component: right panel with file metadata and actions
- Rewrite Dms.tsx: PluginToolbar + 3-column ResizablePanel layout
- Update DmsFile type: size_bytes + uploaded_by (backward compat aliases)
- Add 60+ i18n keys for de/en
2026-07-20 17:31:04 +02:00
Agent Zero
e1a9a8e33e
fix: retrieve UID after IMAP APPEND + handle uid=None mails in vanished check
2026-07-20 16:48:41 +02:00
Agent Zero
a2d68e1aca
fix: call imap_delete_mail BEFORE db.delete/folder_id change — IMAP sync was broken
2026-07-20 16:38:26 +02:00
Agent Zero
3a5520b46a
fix: remove all deleted_at/soft-delete from mails — standard mail program logic only
2026-07-20 16:08:05 +02:00
Agent Zero
fb92acb52b
fix: bidirectional sync — check sync queue before restoring deleted mails
...
- If mail has deleted_at and is still on IMAP server:
- Check sync queue for pending delete operation
- If pending delete exists: our IMAP delete failed, keep deleted, retry via queue
- If no pending delete: another program restored the mail, restore in DB
- This enables true bidirectional sync like Thunderbird/Outlook
2026-07-20 14:35:36 +02:00
Agent Zero
452828babe
fix: never restore deleted mails during sync — deleted means deleted
...
- Sync was restoring deleted_at mails when found on IMAP server
- This caused deleted mails to reappear in inbox on every sync
- Now deleted mails are always skipped during sync, never restored
- IMAP delete is retried via sync queue
2026-07-20 14:26:07 +02:00
Agent Zero
c846a2e158
fix: setLoadingMails(false) must always run — was stuck on "Wird geladen..." after folder switch
2026-07-20 14:21:04 +02:00
Agent Zero
9ecd0e12c8
fix: async race condition in loadMails — responses from old folder were overwriting current folder
...
- When user switches folders quickly, multiple fetchMails requests are in flight
- Responses arrive out of order, last response wins regardless of which folder it was for
- Now loadMails checks selectedFolderIdRef before applying results
- Only updates mails state if the response is for the currently selected folder
2026-07-20 14:15:08 +02:00
Agent Zero
9946c6c4bd
fix: frontend race condition — folder sync callback was reloading wrong folder
...
- When user switches folders quickly, syncFolder(A) callback fires after user already selected B
- loadMails() was called with stale selectedFolderId, loading wrong mails
- Add useRef to track current folder ID, only reload if still on same folder
- Also fix backend: message_id dedup now only within same folder (not cross-folder)
2026-07-20 14:07:26 +02:00
Agent Zero
4acebe55e5
fix: stop cross-folder message_id dedup — mails were being moved between folders
...
- message_id dedup was searching across ALL folders
- A mail in Trash with same message_id as one in INBOX was found and moved to INBOX
- Now message_id dedup only searches within the SAME folder
- This matches how real mail clients work: same message_id in different folders = separate copies
2026-07-20 14:03:19 +02:00
Agent Zero
1a2f7f3ab6
fix: stop sync from moving Trash mails back to Inbox
...
- When mail is moved to Trash in DB (folder_id=Trash, deleted_at set) but IMAP MOVE fails,
the mail stays in INBOX on the IMAP server
- Previously sync restored deleted_at and moved folder_id back to INBOX
- Now sync only restores if mail is in the SAME folder in DB and IMAP
- If mail is in Trash in DB but INBOX on IMAP, skip it — sync queue will retry the MOVE
2026-07-20 13:56:30 +02:00
Agent Zero
7631698215
fix: restore deleted_at mails when still on IMAP server — sync was permanently hiding mails
...
- When IMAP delete fails, deleted_at stays set but mail remains on IMAP server
- Sync was skipping deleted_at mails, so they stayed permanently hidden
- Now sync restores deleted_at=None when mail is found on IMAP server
- This means: if IMAP delete fails, mail reappears in LeoCRM on next sync
- Only truly deleted mails (removed from IMAP server) stay hidden
2026-07-20 13:46:48 +02:00