github-actions[bot]
5fde5be0d4
chore(beta): release 3.66.1-beta.0
2026-06-19 07:57:49 +00:00
github-actions[bot]
0a91f1042f
chore(beta): release 3.66.0-beta.0
2026-06-19 06:47:36 +00:00
github-actions[bot]
c07fb09fe2
chore(beta): release 3.65.1-beta.0
2026-06-18 19:31:14 +00:00
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
github-actions[bot]
bd07fc474d
chore(beta): release 3.61.0-beta.0
2026-06-13 21:47:18 +00: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
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