Phase 3: Saved Filters UI, Entity History UI, Activity Timeline, API Docs Link

- Saved Filters: SavedFilterBar (dropdown, apply, delete), SaveFilterDialog (name + save)
- Entity History: EntityHistoryPanel (timeline, restore, undo), HistoryDiff (field changes visual)
- Activity Timeline: ActivityTimelinePage (grouped by day, pagination), ActivityFilter (user/entity/action/date)
- API Docs Link: TopBar user menu entry, SettingsSystem Entwickler section (Swagger, ReDoc, OpenAPI)
- Routes: /activity registered
- Menu items: Aktivitäten added to automation plugin manifest
This commit is contained in:
Agent Zero
2026-07-26 03:08:26 +02:00
parent a7e3890634
commit 10dcc8ae90
10 changed files with 1263 additions and 1 deletions
+2
View File
@@ -57,6 +57,7 @@ const DedupMergePage = React.lazy(() => import('@/pages/DedupMerge').then(m => (
const ImportExportPage = React.lazy(() => import('@/pages/ImportExport').then(m => ({ default: m.ImportExportPage })));
const TagsPage = React.lazy(() => import('@/pages/Tags').then(m => ({ default: m.TagsPage })));
const CustomFieldsPage = React.lazy(() => import('@/pages/CustomFields').then(m => ({ default: m.CustomFieldsPage })));
const ActivityTimelinePage = React.lazy(() => import('@/pages/ActivityTimeline').then(m => ({ default: m.ActivityTimelinePage })));
/** Centered spinner fallback for lazy-loaded routes */
function PageLoader() {
@@ -134,6 +135,7 @@ const router = createBrowserRouter([
{ path: '/contacts/dedup', element: withSuspense(<DedupMergePage />) },
{ path: '/import-export', element: withSuspense(<ImportExportPage />) },
{ path: '/tags', element: withSuspense(<TagsPage />) },
{ path: '/activity', element: withSuspense(<ActivityTimelinePage />) },
{ path: '/profile', element: withSuspense(<SettingsProfilePage />) },
{
path: '/settings',