github-actions[bot]
0156dd4296
chore(beta): release 3.65.0-beta.0
2026-06-18 19:24:25 +00:00
github-actions[bot]
f6ad6b71dd
chore(beta): release 3.64.0-beta.0
2026-06-18 05:18:49 +00:00
github-actions[bot]
d49a4d425d
chore(beta): release 3.63.0-beta.0
2026-06-17 21:28:24 +00:00
github-actions[bot]
ccdb5b9823
chore(beta): release 3.62.0-beta.0
2026-06-17 20:18:03 +00:00
Luca
402dbde0a1
Merge origin/beta into feat/accounting-inbound-invoices
...
Resolves the 7 feature-flag / i18n conflicts (accounting flags vs upstream's
Project Overview 'projects' flag, both registered in the same files) as
additive unions — accounting + incomingInvoices + expenses AND projects all
coexist. Migrations slot cleanly: projects 117-121, accounting 122-129, no
collisions. Frontend build + backend node --check pass.
2026-06-15 16:37:23 +02:00
github-actions[bot]
bd07fc474d
chore(beta): release 3.61.0-beta.0
2026-06-13 21:47:18 +00:00
Luca
5645c304ab
feat(email): incoming mail (IMAP) intake - backend + standalone flag
...
Adds a second mail config (incoming/IMAP) alongside the outgoing SMTP one, a
1-minute poller, and a received-emails log. Standalone `incomingMail` feature
flag (default off).
- deps: imapflow + mailparser (receive-side; picpeak only had nodemailer).
- migration 128: email_configs gains imap_* columns (same shape as smtp_*);
seed incomingMail flag; new received_emails audit table.
- emailIntakeService: polls the mailbox every 60s when the flag is on AND a
mailbox is configured (no-op otherwise); parses each unseen message
(mailparser flattens forwarded/nested attachments), drops PDF/JPEG/PNG into
the incoming-invoices inbox (inbound_documents, source='email'), logs each
message in received_emails (dedupe by message-id; duplicate attachments
caught by the existing SHA-256 guard), marks it \Seen.
- adminEmail: GET/POST /incoming-config (mirrors SMTP config, masks imap_pass,
SSRF host guard) + GET /received (paginated log).
- server.js starts the poller at boot.
Verified: node -c, require-graph, migration-128 harness (imap columns, flag,
received_emails). Frontend (IMAP block under SMTP + Received tab + flag card)
follows.
2026-06-11 15:54:43 +02:00
github-actions[bot]
3aaddaf210
chore(beta): release 3.60.6-beta.0
2026-06-10 16:38:01 +00:00
github-actions[bot]
a3e5ba4e75
chore(beta): release 3.60.5-beta.0
2026-06-09 16:11:18 +00:00
github-actions[bot]
6ccac348ac
chore(beta): release 3.60.4-beta.0
2026-06-08 20:52:58 +00:00
github-actions[bot]
13b3a4cfa1
chore(beta): release 3.60.3-beta.0
2026-06-04 20:09:37 +00:00
github-actions[bot]
6ee30a357d
chore(beta): release 3.60.2-beta.0
2026-06-04 19:40:36 +00:00
github-actions[bot]
3361a8bb51
chore(beta): release 3.60.1-beta.0
2026-06-02 07:17:10 +00:00
github-actions[bot]
987911a03b
chore(beta): release 3.60.0-beta.0
2026-06-02 07:11:30 +00:00
github-actions[bot]
b646dab493
chore(beta): release 3.59.1-beta.0
2026-05-31 21:10:15 +00:00
github-actions[bot]
714f7647fc
chore(beta): release 3.59.0-beta.0
2026-05-29 20:54:16 +00:00
github-actions[bot]
d50edcc427
chore(beta): release 3.58.0-beta.0
2026-05-29 20:05:46 +00:00
github-actions[bot]
4989c468a8
chore(beta): release 3.57.2-beta.0
2026-05-29 20:04:53 +00:00
github-actions[bot]
7be484eb8e
chore(beta): release 3.57.1-beta.0
2026-05-29 20:03:02 +00:00
github-actions[bot]
463ef4d0fd
chore(beta): release 3.57.0-beta.0
2026-05-29 14:25:27 +00:00
github-actions[bot]
84486c65f1
chore(beta): release 3.56.0-beta.0
2026-05-29 09:27:47 +00:00
Paul Nothaft
5f0fcc225c
Merge pull request #555 from Luca-Timo/feat/crm-pr
...
feat: CRM module — quotes, contracts, invoices, hours, calendar, tax
2026-05-29 11:27:23 +02:00
github-actions[bot]
fd8ee5d52c
chore(beta): release 3.55.0-beta.0
2026-05-27 13:53:11 +00:00
github-actions[bot]
54b185db47
chore(beta): release 3.54.7-beta.0
2026-05-26 20:54:29 +00:00
Luca
d543949188
feat(crm): backend code — services + routes + utilities + tests
...
Brings in the full backend CRM stack on top of the consolidated
migration (60abe8c ).
Services (CRM)
- quoteService — full lifecycle (draft → sent → accepted → converted
to event/invoice), Skonto + Storno + reissue paths
- invoiceService — spawnInstallmentInvoices, updateInstallmentPlan,
monthly-billing accumulator, payment-check tokens, dunning ladder
- contractService — block-composable contract editor, in-browser
signature flow, wet-PDF upload path, integrity check, audit trail
- customerHoursService — per-entry locking, billing integration
- dealsService — cross-document lineage (deal_uuid)
- taxReportService — quarterly aggregates + CSV/PDF export
- eventReminderService — pre-event customer reminder cron pass
- _renderContext — shared issuer/recipient blocks across PDF types
- pdfService extensions — custom-font registration, font picker
Routes (admin + public)
- adminQuotes, adminInvoices, adminContracts, adminCalendar,
adminDeals, adminTaxReport, adminDev, adminBusinessProfile
- publicQuotes (accept/decline), publicContracts (sign),
publicPaymentCheck
- Extensions on adminEvents, adminCustomers, adminSettings,
adminEmail, adminFeatureFlags, adminThumbnails, adminPhotos,
adminCategories, adminUsers, adminArchives, adminDashboard
- server.js wires the new mounts (kept upstream's noStoreCache on
customer routes per 3-way merge)
Utilities
- schemaCache (cached hasColumn lookups across services)
- documentSequences (atomic gap-free numbering — §14 UStG)
- safePath (path-containment guards at fs stream boundaries)
- clientIp (sanctioned XFF reader for audit logs)
- publicTokenGuards (pre-multer token validation + attempt counters)
- numericHelpers (ensureInt / ensureNumber consolidation)
- dateFormatter (formatShortDate + dateInputLang)
- dbCompat extensions, iban + pdfFilename helpers, resolveLogoFile
Infrastructure
- Bundled PDF fonts (Comic-Neue / IBM-Plex-Sans / Inter / Jost /
Montserrat / Noto-Sans / Playfair-Display / Poppins)
- Backend package.json + lock updates (pdfkit, signature_pad,
qrcode, et al.)
- Sample storage layout under storage/business-docs/quote/
Tests
- 14 new test files covering quote/invoice/contract lifecycle,
installment plan reshape, line-item hierarchy, customer hours,
payment check, tax report PDF, IBAN parsing, filename sanitiser
2026-05-26 18:18:51 +02:00
github-actions[bot]
08fa2e9b63
chore(beta): release 3.54.6-beta.0
2026-05-25 20:19:09 +00:00
github-actions[bot]
793aa1247e
chore(beta): release 3.54.5-beta.0
2026-05-22 12:41:21 +00:00
github-actions[bot]
955ada4945
chore(beta): release 3.54.4-beta.0
2026-05-21 08:24:22 +00:00
github-actions[bot]
c1e8e0d73a
chore(beta): release 3.54.3-beta.0
2026-05-21 08:22:26 +00:00
github-actions[bot]
03cf09a7bf
chore(beta): release 3.54.2-beta.0
2026-05-20 14:49:19 +00:00
github-actions[bot]
baf5f27fb4
chore(beta): release 3.54.1-beta.0
2026-05-20 06:53:31 +00:00
github-actions[bot]
085a2e5fed
chore(beta): release 3.54.0-beta.0
2026-05-20 06:24:22 +00:00
github-actions[bot]
c042a33431
chore(beta): release 3.53.0-beta.0
2026-05-19 05:27:14 +00:00
github-actions[bot]
b2b46d311d
chore(beta): release 3.52.1-beta.0
2026-05-18 18:59:57 +00:00
github-actions[bot]
db3f1b83ce
chore(beta): release 3.52.0-beta.0
2026-05-18 18:56:50 +00:00
github-actions[bot]
acb387f69c
chore(beta): release 3.51.5-beta.0
2026-05-17 07:28:47 +00:00
github-actions[bot]
4da6726e57
chore(beta): release 3.51.4-beta.0
2026-05-17 07:26:57 +00:00
github-actions[bot]
941453fd7f
chore(beta): release 3.51.3-beta.0
2026-05-16 23:19:50 +00:00
github-actions[bot]
5a9ca4ad57
chore(beta): release 3.51.2-beta.0
2026-05-16 23:02:10 +00:00
github-actions[bot]
2e828fcf9f
chore(beta): release 3.51.1-beta.0
2026-05-16 22:53:14 +00:00
github-actions[bot]
72c2b5c796
chore(beta): release 3.51.0-beta.0
2026-05-14 21:25:07 +00:00
github-actions[bot]
365582e678
chore(beta): release 3.50.0-beta.0
2026-05-14 20:44:57 +00:00
github-actions[bot]
d4198e1bbc
chore(beta): release 3.49.6-beta.0
2026-05-14 19:37:31 +00:00
github-actions[bot]
1e4f762871
chore(beta): release 3.49.5-beta.0
2026-05-14 19:02:43 +00:00
github-actions[bot]
57ea08e1ed
chore(beta): release 3.49.4-beta.0
2026-05-14 18:49:31 +00:00
github-actions[bot]
bc58520cd2
chore(beta): release 3.49.3-beta.0
2026-05-14 18:18:43 +00:00
github-actions[bot]
1cbb0c4cff
chore(beta): release 3.49.2-beta.0
2026-05-13 16:46:19 +00:00
github-actions[bot]
e5ef893395
chore(beta): release 3.49.1-beta.0
2026-05-13 16:31:12 +00:00
github-actions[bot]
b3c6508712
chore(beta): release 3.49.0-beta.0
2026-05-13 16:18:38 +00:00
github-actions[bot]
fa71e7ea1e
chore(beta): release 3.48.1-beta.0
2026-05-12 20:57:36 +00:00