Commit Graph

252 Commits

Author SHA1 Message Date
Agent Zero 52a5c347de sprint2: frontend permission checks for ContactDetail + ContactsList + Field-Level UI 2026-07-29 01:56:07 +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 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 33aae769e4 feat: tree grouping for list and cards views (matching table view) 2026-07-28 15:26:46 +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 e07ffc9aee fix: SaveViewDialog speichern button template literal className fix 2026-07-28 14:21:44 +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 7194240a32 fix: keep tree structure in multi-select, checkbox+chevron, separate toggle/expand 2026-07-28 12:37:04 +02:00
Agent Zero 04bd5b1c09 fix: multi-select icon before label, checkboxes not indented in multi-select mode 2026-07-28 12:31:18 +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 bbaded656f fix: toolbar dropdown z-index and overflow for visibility 2026-07-28 00:50:39 +02:00
Agent Zero 722335c923 contacts toolbar: consolidate views and filters into dropdowns 2026-07-28 00:45:55 +02:00
Agent Zero e1e7405821 fix: match mail folder tree styling - remove min-h-touch, font-medium only on active, motion-safe transition 2026-07-27 23:55:01 +02:00
Agent Zero ee38b200f8 fix: tighten folder tree spacing + collapsible search icon in toolbar 2026-07-27 23:46:16 +02:00
Agent Zero 9a922f8abb feat: color picker panel with 18 preset colors + native color input + hex field 2026-07-27 17:31:42 +02:00
Agent Zero c670084420 fix: dropdown as portal in document.body with z-9999 — no longer hidden by sidebar 2026-07-27 17:22:24 +02:00
Agent Zero 01040201ef fix: button as sibling of draggable div — desktop drag no longer blocks click 2026-07-27 17:10:00 +02:00
Agent Zero 4a3e4cd0a4 fix: restore drag-and-drop + onPointerDown stopPropagation on button — both work on all resolutions 2026-07-27 16:57:48 +02:00
Agent Zero 4c951c9c61 fix: remove draggable from folder item — button click works on all resolutions 2026-07-27 16:48:49 +02:00
Agent Zero 470e183ade fix: button in normal flow, only inner span draggable — fixes dropdown position and icon shift 2026-07-27 16:35:13 +02:00
Agent Zero bb48793217 fix: move more-options button outside draggable div to fix click
- Button was inside draggable div — browser started drag instead of click
- Button is now absolutely positioned outside the draggable div
- Outer div has position:relative for correct button placement
- Spacer span reserves space for the button in the layout
- Works on all screen sizes (desktop, tablet, mobile)
2026-07-27 16:28:24 +02:00
Agent Zero 75505ab5bf fix: folder dropdown button not working — drag interference + button too small
- Button: draggable={false}, onMouseDown stopPropagation prevents drag swallow
- Button: larger (p-1.5, w-4 h-4), opacity-70, rounded hover bg
- Parent onDragStart: checks if target is Optionen button, prevents drag
- handleMoreClick: currentTarget fallback to closest('button')
- type='button' prevents accidental form submit
2026-07-27 15:58:48 +02:00
Agent Zero 81ff27b76a feat: contact folder drag-and-drop, mobile dropdown, folder-in-folder move
- Folders are draggable: drag folder into another folder (parent_id update)
- Circular reference prevention: isDescendantOrSelf() check
- Root drop zone: drag folder to root unparents it (parent_id=null)
- MoreVertical button: opacity-60 for mobile visibility (was opacity-0)
- Dropdown: viewport-clamped positioning + maxHeight with scroll
- ContactList already had draggable contacts (no changes needed)
2026-07-27 14:32:42 +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 1916243d36 fix: restore drag-and-drop in ContactFolderTree with dropdown menu (rename/color/pin/delete) 2026-07-27 09:52:55 +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 1ba702f6fe fix: report API errors (422, 404, 5xx, network) and React errors to Forgejo error reporter
- client.ts: logError() import added, API error interceptor now reports to /api/v1/errors
- ErrorBoundary.tsx: logError() import added, React rendering errors now reported
- 401 (auth) and 403 (permission) errors are NOT reported (expected behavior)
- 422 (validation), 404 (not found), 5xx (server), 0 (network) ARE reported
2026-07-26 23:45:59 +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 b6e3afd28b Phase 4 + M5: Low-priority fixes and frontend component integration
M5: TagBadge integrated into ContactDetail (replaces plain Badge)
M5: EntityHistoryPanel integrated into ContactDetail (timeline section)

L1: Replace document.write() with Blob URL in print.ts (XSS-safe)
L2: AI UI Control feedback storage capped at 100 entries (FIFO eviction)
L3: Backup & Restore documentation added to DEPLOY.md

Verified: Backend import OK, TypeScript 0 errors
2026-07-26 21:29:37 +02:00
Agent Zero 825d638130 Phase 3: Fix medium-priority issues (M1-M4, M6)
M1: Password complexity validation (min 8 chars, uppercase, lowercase, digit)
M2: Remove is_system_admin from login response (prevent role leaking)
M3: Permission cache invalidates on DB error instead of using stale data
M4: .env.docker.example already fixed in B9 (SECRET_KEY, FRONTEND_URL, SMTP)
M6: Frontend test setup auto-wraps with QueryClientProvider (fixes ~29 test failures)

Remaining: M5 (frontend component integration — WelcomeDialog, SavedFilterBar, etc.)
2026-07-26 20:51:40 +02:00
Agent Zero c3e41906bf feat: add forgejo_error_reporter plugin for automatic error reporting to Forgejo issues 2026-07-26 12:49:39 +02:00
Agent Zero 808da564f3 fix: improve error handling and stability - no logout on transient errors, add ErrorBoundary, global error logging 2026-07-26 12:18:52 +02:00
Agent Zero 4dbbc422ce fix: repair print/PDF in Reports — fix document.write/appendChild mix, add printPdfBlob for print format 2026-07-26 09:40:43 +02:00