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
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
ba06214efa
fix: quick-access button title matching for plugin rooms (Assistent, Live KI, System)
2026-07-22 01:56:25 +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
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
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
61ab481349
fix: incremental IMAP sync - only fetch new UIDs since last known, like real mail clients
...
- imap_sync_folder now searches only UID > max_known_uid instead of ALL
- First sync gets last 50, subsequent syncs only get new mails
- UI loads cached mails immediately from DB, sync runs in background
- Folder counts updated after sync
2026-07-20 12:12:53 +02:00
Agent Zero
3313047577
feat: live IMAP sync on folder select + 60s auto-sync interval
...
- New imap_sync_folder function: syncs single folder quickly for live use
- New POST /mail/folders/{folder_id}/sync route
- Frontend: syncFolder API + called on every folder selection
- Auto-sync interval reduced from 300s to 60s
- Sent mail IMAP APPEND already uploads full body via msg.as_bytes()
2026-07-20 12:01:16 +02:00
Agent Zero
2a33b5706a
fix: remove redundant reply/forward action bar from MailDetail
2026-07-20 10:55:03 +02:00
Agent Zero
9da04057b9
feat: mail list font size, remove Termin toolbar, rename Flagge to Markierung with symbol picker
...
- Mail list: title and subject font text-xs -> text-sm
- Remove Termin (create-event) toolbar button
- Rename Flagge -> Markierung with select dropdown (star, flag, bookmark, important, question)
- Backend: add flag_type column to Mail model + migration 0006
- Backend: flag_type in MailFlagsUpdate schema, update_flags route, mail_to_response
- Frontend: flag_type in Mail interface, FlagUpdatePayload, MailList symbol display
2026-07-20 10:39:16 +02:00
Agent Zero
5fa3f0540b
fix: AI assistant rename pencil button directly triggers rename instead of context menu
2026-07-20 10:23:15 +02:00
Agent Zero
823974ff4b
fix: remove unwanted toolbar bar above mail columns
2026-07-20 10:15:55 +02:00
Agent Zero
158f6b36d0
fix: match SessionList vertical spacing (py-1.5) in mail folder tree
2026-07-20 10:03:48 +02:00
Agent Zero
9063093a5a
feat: compact mail folder tree + right-click Ordner leeren
...
- MailFolderTree: compact styling matching AI assistant SessionList (py-1, text-sm, depth*12+8 padding, no space-y)
- Added right-click context menu on folders with "Ordner leeren" entry
- Backend: POST /mail/folders/{folder_id}/empty soft-deletes all mails in folder
- Frontend API: emptyFolder() function added to mail.ts
- Mail.tsx: onFolderEmptied callback reloads mails and folders
2026-07-20 09:25:43 +02:00
Agent Zero
35fcd2a9d4
fix: ContactFolderTree nur Ordner-Baum ohne Kontakte, Kontakte in mittlerer Liste
2026-07-20 07:36:35 +02:00
Agent Zero
3129f407f5
UI: ContactFolderTree als echter Baum - keine Trennung Firmen/Privat, ein Baum mit allen Kontakten, Personen-Symbol statt Ordner-Symbol
2026-07-20 03:12:15 +02:00
Agent Zero
c09aeb653d
fix: draggable nur auf Folder-Icon, Rechtsklick funktioniert wieder
2026-07-20 02:37:46 +02:00
Agent Zero
f287a0a4d1
fix: Context-Menu Konflikt mit draggable Ordner behoben
2026-07-20 02:29:40 +02:00
Agent Zero
c3974c2ef9
fix: Neuer Chat Button erstellt Session, Ordner drag&drop im KI-Baum
2026-07-20 02:20:43 +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
beb4d7a9ff
UI: Einstellungen+AuditLog aus Sidebar entfernt, AuditLog ins User-Menü, Suchfeld höher, Benachrichtigungs-Icon größer
2026-07-20 00:10:22 +02:00
Agent Zero
1d3b7a497b
Fix: Suchfeld Höhe reduziert, Roboter-Symbol aus TopBar entfernt (nicht Sidebar!), Sidebar-Eintrag wiederhergestellt, Lösch-Buttons funktionsfähig mit State, Badge-Zahl dynamisch
2026-07-19 23:50:37 +02:00
Agent Zero
d1a40c18e6
UI: schmaleres Suchfeld, KI-Symbol aus Sidebar entfernt, Lösch-Button bei Benachrichtigungen, KI Sidebar per Drag verstellbar (handleSide=left)
2026-07-19 23:16:22 +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
Agent Zero
6f1655785e
fix: resolve all 12 TypeScript errors (tsc --noEmit clean)
...
- mail.ts: add explicit types to decodeMimeHeader callback params
- SessionList.tsx: use React.MouseEvent instead of nativeEvent
- ComposeModal.tsx: construct name from first_name + last_name
- MailDetail.tsx: destructure onReply/onForward from props
- RichTextEditor.tsx: use SetContentOptions object instead of boolean
- MailSearchBar.tsx: add optional value prop to interface
- EmptyState.tsx: add optional children prop
- Badge.tsx: add secondary variant to BadgeVariant, variantClasses, dotColors
- ConfirmDialog.tsx: add optional children prop
- hooks.ts: extend SearchResult type to include mail/file/event
2026-07-19 17:41:39 +02:00
Agent Zero
27a8ad8b30
fix: resolve all 65 pre-existing frontend test failures (318/318 passing)
...
- Remove duplicate vi.mock(@/api/hooks) in SettingsRoles.test.tsx that overrode forceUpdate logic
- SettingsRoles mock: use vi.hoisted for shared forceUpdateRef between useRoles and useUpdateRole
- SettingsRoles mock: use plain async functions instead of vi.fn().mockImplementation for mutations
2026-07-19 14:41:38 +02:00
Agent Zero
5d9ddbebd2
fix: remove tenant switcher from TopBar, fix aiProactive API double-prefix
...
- Remove tenant switcher dropdown from TopBar (cleanup unused vars/imports)
- Fix aiProactive.ts: remove /api/v1 prefix from apiClient calls (baseURL already includes it)
- This fixes 404 errors on /api/v1/api/v1/ai-proactive/suggestions
2026-07-19 00:28:11 +02:00
Agent Zero
ef6d011e16
ui: adjust toolbar heights and icon sizes, remove duplicate AI icon
...
- TopBar: h-16 → h-[58px] (10% lower), icons w-5 → w-4
- PluginToolbar: min-h-[36px] → min-h-[43px] (20% higher), icons w-3.5 → w-4
- Remove duplicate AI computer icon from TopBar (AISidebar collapsed icon remains)
- Clean up unused imports (toggleAISidebar, aiSidebarCollapsed)
2026-07-19 00:09:17 +02:00
Agent Zero
7e53b747c7
feat: add Proaktiv and KI Chat tabs to AI sidebar
2026-07-18 17:48:09 +02:00