Agent Zero
ed1eec87dc
feat: mail phase 2 - delete, move, drafts
...
- Add deleted_at field to Mail/MailAccount/MailFolder models
- Add DELETE /{mail_id} endpoint (soft-delete + IMAP EXPUNGE)
- Add POST /{mail_id}/move endpoint (IMAP UID MOVE + folder_id update)
- Add POST /drafts and PUT /drafts/{id} endpoints (save/edit drafts)
- Add imap_delete_mail() and imap_move_mail() service functions
- Add save_draft() and update_draft() service functions
- Frontend: deleteMail, moveMail, saveDraft, updateDraft API functions
- ComposeModal: draft mode with Save Draft button
- MailDetail: delete/move buttons, edit-draft for drafts
- Mail.tsx: bulk delete/move, move dropdown, draft handlers
- i18n: 13 new keys (de/en)
2026-07-15 19:44:46 +02:00
Agent Zero
df83cee10c
feat: mail phase 1 - HTML iframe display, bulk read/unread, IMAP flag sync
...
- Fix FlagUpdatePayload field names to match backend schema (is_seen/is_flagged)
- Replace dangerouslySetInnerHTML with sandboxed iframe (srcDoc, sandbox="")
- Add bulk mark read/unread with checkbox selection in MailList
- Add floating bulk action bar in Mail.tsx
- Add imap_sync_mail_flags() to push Seen/Flagged flags to IMAP server
- Call IMAP flag sync in PATCH /flags endpoint
- Add i18n keys for bulk actions (de/en)
2026-07-15 19:26:37 +02:00
Agent Zero
2108bdb9c2
feat: mail attachment support — sync, display, download, upload
2026-07-15 18:43:38 +02:00
Agent Zero
57b6df5357
fix: IMAP hierarchical folder sync, deduplication, folder tree display, resizable panel
2026-07-15 15:59:04 +02:00
Agent Zero
e0975f4044
fix: mail UI German labels, multi-folder sync, account management, resizable panel fix
2026-07-15 14:36:45 +02:00
Agent Zero
6b6408fd25
fix: mail response fields - arrays for addresses, add from_name/body_html/sanitized_html/date
...
- to_addresses/cc_addresses/bcc_addresses now returned as arrays
- Added from_name, body_html, sanitized_html, date fields for frontend compatibility
2026-07-15 08:42:37 +02:00
Agent Zero
be8a95995b
fix: IMAP sync response parsing - extract bytearray from response lines
...
- aioimaplib returns bytes/bytearray lines, not tuples
- Find bytearray line containing the raw email data
2026-07-15 02:20:02 +02:00
Agent Zero
78478db625
fix: IMAP sync uid_fetch and response parsing
...
- Replace client.uid_fetch() with client.uid("fetch", ...) (aioimaplib API)
- Fix response parsing for aioimaplib Response object structure
2026-07-15 02:14:01 +02:00
leocrm-bot
6710480527
feat: report_generator core plugin — Jinja2 templates, CSV/Excel/JSON output, 8 API endpoints
2026-07-08 23:50:59 +02:00
leocrm-bot
bb4b0ce514
feat: Core Plugin system — is_core flag, topological sort dependency resolution, deactivation protection
2026-07-07 07:44:02 +02:00
leocrm-bot
047b59a1f3
fix: remove broken service re-exports from __init__.py — fixes ImportError on startup
2026-07-04 18:14:30 +02:00
Leopoldadmin
d0375a990e
A: Remove address fields from contact_service — dict, create, update
2026-07-04 01:42:11 +00:00
Leopoldadmin
1708c4d94a
A: Remove address fields from company_service — dict, create, update, export
2026-07-04 01:42:10 +00:00
Leopoldadmin
7473efbb02
A: Remove address fields from contact schemas — addresses now via Address model
2026-07-04 01:42:09 +00:00
Leopoldadmin
1e3ee64431
A: Remove address fields from company schemas — addresses now via Address model
2026-07-04 01:42:08 +00:00
Leopoldadmin
f137f38cdd
C3: Fix sequence_service.py — add delete_sequence function (soft-delete with audit)
2026-07-04 01:31:19 +00:00
Leopoldadmin
d13f82ae8b
A/C1/C6: Register addresses+audit routers, add seed_default_data in lifespan
2026-07-04 01:30:08 +00:00
Leopoldadmin
4c415e8f37
C6: Add audit log route — admin-only, paginated, filterable
2026-07-04 01:30:07 +00:00
Leopoldadmin
fe2882689b
C1: Add seeds.py — EUR currency, 19% and 7% tax rates, idempotent
2026-07-04 01:30:06 +00:00
Leopoldadmin
42db39cd31
Update app/services/sequence_service.py
2026-07-04 01:30:05 +00:00
Leopoldadmin
e594e8aa16
C3: Add DELETE endpoint to sequences route (admin-only, soft-delete)
2026-07-04 01:30:04 +00:00
Leopoldadmin
a925ca01e4
B2: Currency.code — remove unique=True, add tenant-scoped UniqueConstraint
2026-07-04 01:30:03 +00:00
Leopoldadmin
1a1b02c168
C2: Add all new services to services/__init__.py exports
2026-07-04 01:30:02 +00:00
Leopoldadmin
b7c8abd7aa
A/C6: Add addresses and audit to routes/__init__.py
2026-07-04 01:30:01 +00:00
Leopoldadmin
9009135c74
B3: CSRF middleware — add X-CSRF-Token validation via Redis session lookup
2026-07-04 01:23:41 +00:00
Leopoldadmin
2bcf3e5c55
A: Add address routes — list, create, update, delete with entity filtering
2026-07-04 01:23:40 +00:00
Leopoldadmin
0a228ba982
A: Add address_service — CRUD with tenant isolation, set_default, migration helper
2026-07-04 01:23:39 +00:00
Leopoldadmin
944a90747f
A: Add Address to models/__init__.py exports
2026-07-04 01:23:38 +00:00
Leopoldadmin
25ea973c1b
A: Add Address schemas — create, update, response
2026-07-04 01:22:07 +00:00
Leopoldadmin
71e8c4aa86
A: Remove 5 address fields from Contact — addresses now via Address model
2026-07-04 01:22:06 +00:00
Leopoldadmin
bcc83c2f84
A: Remove 5 address fields from Company — addresses now via Address model
2026-07-04 01:22:06 +00:00
Leopoldadmin
426028b615
A: Add Address model — polymorphic multi-address support
2026-07-04 01:22:04 +00:00
Leopoldadmin
73601d17f8
B1: Fix duplicate __all__ in models/__init__.py — merged into single block with all models, no duplicates
2026-07-04 01:21:20 +00:00
Leopoldadmin
3bf2adff86
feat(core): remove duplicate deleted_at from Attachment (inherited from SoftDeleteMixin)
2026-07-04 00:31:47 +00:00
Leopoldadmin
30a7f603b7
feat(core): remove duplicate deleted_at from SystemSettings (inherited from SoftDeleteMixin)
2026-07-04 00:31:46 +00:00
Leopoldadmin
c87c125395
feat(core): remove duplicate deleted_at from Sequence (inherited from SoftDeleteMixin)
2026-07-04 00:31:46 +00:00
Leopoldadmin
a6a4131e11
feat(core): remove duplicate deleted_at from TaxRate (inherited from SoftDeleteMixin)
2026-07-04 00:31:45 +00:00
Leopoldadmin
ade9e01b4e
feat(core): remove duplicate deleted_at from Currency (inherited from SoftDeleteMixin)
2026-07-04 00:31:45 +00:00
Leopoldadmin
99411fce35
feat(core): remove duplicate deleted_at from Contact (inherited from SoftDeleteMixin)
2026-07-04 00:31:45 +00:00
Leopoldadmin
bc0f4e8223
feat(core): remove duplicate deleted_at from Company (inherited from SoftDeleteMixin)
2026-07-04 00:31:44 +00:00
Leopoldadmin
02d5195c1c
feat(core): add SoftDeleteMixin to db base, TenantMixin inherits from it
2026-07-04 00:31:44 +00:00
Leopoldadmin
3bacf1949b
feat(core): register attachment router in main.py
2026-07-04 00:29:39 +00:00
Leopoldadmin
841234014a
feat(core): register attachment routes
2026-07-04 00:29:38 +00:00
Leopoldadmin
a31829f2ff
feat(core): register Attachment model
2026-07-04 00:29:38 +00:00
Leopoldadmin
e3e4e9e39d
feat(core): add attachment routes
2026-07-04 00:29:12 +00:00
Leopoldadmin
1fdcc95ac5
feat(core): add attachment service
2026-07-04 00:29:12 +00:00
Leopoldadmin
b844859da3
feat(core): add attachment schemas
2026-07-04 00:29:11 +00:00
Leopoldadmin
b7dc05b7ee
feat(core): add Attachment model
2026-07-04 00:29:11 +00:00
Leopoldadmin
3eeb1f4102
feat(core): register system_settings router in main.py
2026-07-04 00:26:22 +00:00
Leopoldadmin
df623fde30
feat(core): register system_settings routes
2026-07-04 00:26:21 +00:00