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
a7e16e7bf6
feat(crm): frontend code — pages + services + components
...
Brings in the full frontend CRM stack: admin authoring pages,
customer-portal surfaces, public response flows, typed services,
and the supporting component library. i18n locale JSON is the next
commit (kept separate so reviewers can read it as data).
Pages
- Quotes: list / editor / detail / public accept-decline
- Invoices: list / editor / detail / public payment-check
- Contracts: list / editor / detail / block library / public sign
- Calendar (FullCalendar — admin-only v1)
- Tax report (period picker + CSV/PDF export)
- Hours (logged time entries, per-customer)
- Deals lineage (DocumentLineageCard surfaces)
- CRM Development (admin dev tools, gated by crmDevelopment flag)
- Customer-portal pages for quotes / invoices / contracts
- Settings reorg: CRM-Settings group + dedicated tabs for Business
Profile, CRM behaviour, Contracts block library, Reminder emails
- BrandingPage typography (PDF font picker)
- EventDetailsPage / CustomerDetailPage / CreateEventPage extensions
(event-time fields, hours toggle, per-event reminder override)
Services (typed)
- quotes.service, bills.service, contracts.service
- customerAdmin.service, deals.service, calendar.service,
taxReport.service, contracts-blocks.service
- businessProfile.service (timezone, font picker, bank accounts)
- useInstallmentDefaults hook, useLocalizedDate dateInputLang extension
Components (admin)
- CustomerPicker (shared across quote/invoice/contract editors)
- LineItemsTable (hierarchy + details_text, memoised pricing)
- InstallmentsPanel (simple + advanced toggle, fixed-date vs trigger)
- DocumentLineageCard (deal_uuid grouped view)
- EditInstallmentPlanModal (atomic post-spawn plan reshape)
- EventReminderOverrideCard, EmailTemplateEditor (tiptap),
PdfFontPicker, IntegrityCheckCard
- Feature-flag context + RequireFeature wrapper + AdminSidebar
featureFlagsAny derivation + UI-hiding sweep
Build infra
- vite.config: fullcalendar chunk carved off (~200 KB lazy-loaded)
- frontend/package.json: tiptap, fullcalendar, signature_pad,
react-international-phone, et al.
- tailwind + prose styles updated for editor surfaces
3-way merge note: 1 conflict (CustomerDetailPage.tsx) hand-resolved
to keep upstream's SUPPORTED_LANGUAGES.map() data-driven pattern
over feat/crm's hardcoded option list; feat/crm's DecimalInput
import preserved alongside.
2026-05-26 18:19:32 +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
Paul Nothaft
27e9b0535e
Merge pull request #545 from the-luap/chore/clawpatch-review-fixes
...
chore: address clawpatch review findings
2026-05-21 19:07:17 +02:00
Paul Nothaft
dba98f1325
chore: address clawpatch review findings (test scope, deps, legal-page hardening)
...
- frontend: `npm test` now runs all 7 vitest suites instead of one hardcoded
file; the previously skipped ProtectedImage / Skeleton / usePublicSettings /
contrast / themeMigration / url suites are now active in CI
- frontend: wrap ThemeCustomizerEnhanced test in QueryClientProvider so the
newly-enabled run passes (component uses useQuery internally)
- root: drop unused better-sqlite3 / canvas / node-fetch + their
prebuild-install/tar-fs override (backend keeps its own copies); add dotenv
so playwright.config.ts can load on a clean install; add name/version/private
- LegalPage: scheme-validate external_url before window.location.replace so a
CMS edit can't redirect visitors to javascript:/data:
- LegalPage: force rel="noopener noreferrer" on target="_blank" anchors in
sanitized CMS HTML to block reverse-tabnabbing
2026-05-21 17:10:34 +02: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
github-actions[bot]
dafc8d041a
chore(beta): release 3.48.0-beta.0
2026-05-12 20:48:26 +00:00
github-actions[bot]
a5e58d085e
chore(beta): release 3.47.2-beta.0
2026-05-11 20:15:57 +00:00
github-actions[bot]
d9d52ec8ab
chore(beta): release 3.47.1-beta.0
2026-05-11 19:57:31 +00:00
github-actions[bot]
1c23ec51ec
chore(beta): release 3.47.0-beta.0
2026-05-11 19:44:45 +00:00
github-actions[bot]
b31fc2140b
chore(beta): release 3.46.3-beta.0
2026-05-11 18:18:34 +00:00
github-actions[bot]
eddcdbf4d8
chore(beta): release 3.46.2-beta.0
2026-05-11 18:07:41 +00:00
github-actions[bot]
3ea7eea4b7
chore(beta): release 3.46.1-beta.0
2026-05-11 08:07:45 +00:00
github-actions[bot]
87dfae0074
chore(beta): release 3.46.0-beta.0
2026-05-11 07:57:50 +00:00
github-actions[bot]
55e6395e9e
chore(beta): release 3.45.1-beta.0
2026-05-10 20:09:09 +00:00
github-actions[bot]
421354bc5a
chore(beta): release 3.45.0-beta.0
2026-05-10 19:57:54 +00:00
Paul Nothaft
f3505c2631
Merge pull request #450 from the-luap/feat/footer-overhaul-441-440
...
feat(footer): hideable legal links + socials + promo banner (#441 + #440 )
2026-05-10 21:57:35 +02:00
github-actions[bot]
d2864854e7
chore(beta): release 3.44.2-beta.0
2026-05-10 19:51:03 +00:00
Paul Nothaft
3a731e7c95
feat(footer): hideable legal links + socials + promo banner ( #441 + #440 )
...
Combined footer overhaul:
- Per-CMS-page show_in_footer toggle (#441 ) — admins can hide
Impressum / Datenschutz from the gallery footer when an external
privacy / imprint URL is enough.
- Five social-media URL fields in branding settings (#441 ) — Facebook,
Instagram, WhatsApp, X/Twitter, YouTube. Empty string hides each
icon individually; the row is omitted when none are set.
- Promotional banner slot above or below the gallery footer (#440 ) —
global default authored as markdown in branding settings, plus a
three-way per-event override on the Edit Event form
(inherit / custom / off). Backend nulls promo_markdown automatically
when mode != 'custom' so stale text never persists.
Sanitization: marked with gfm/breaks → DOMPurify with a tight
allowlist (no img, no tables, no inline html). Post-process forces
target=_blank rel="noopener noreferrer nofollow" on every link so
admin-set URLs can't tab-nap the gallery context.
i18n covers all six locales (en/de/nl/pt/ru/fr).
Targets the beta branch.
2026-05-10 21:46:20 +02:00
github-actions[bot]
481f8c2f9f
chore(beta): release 3.44.1-beta.0
2026-05-10 19:01:51 +00:00