Product updates
Changelog
Every new feature, improvement and fix we ship — across the Cashwerk
platform, updated automatically with each release.
Frontend v1.7.0
New
- licensing: branded upgrade dialog for gated actions (global)
Fix
- organization,licensing: ungate branches; guard null interval label
- ci: guard resolve-local-deps so changelog workflow doesn't fail in single-repo CI
Docs
- changelog: update CHANGELOG.md for v1.6.0
Notable
- release: 1.7.0 [minor]
- nx-chat: fixed visual issue with CDK content wrapper
Backend v1.7.0
New
- i18n: add ERRORS.LICENSING.SEAT_ABOVE_MAXIMUM (de+en)
Fix
- licensing: floor license expiry at granted free period; add expiry repair
Docs
- changelog: update CHANGELOG.md for v1.6.1
Notable
- release: 1.7.0 [minor]
Backend v1.6.1
Fix
- licensing: resolve seat-based product per tier (legacy/per-seat coexist in prod)
- ci: guard resolve-local-deps so changelog workflow doesn't fail in single-repo CI
Docs
- changelog: update CHANGELOG.md for v1.6.0
Notable
- release: 1.6.1 [patch]
Frontend v1.6.0
New
- licensing: resume-payment CTA in billing cockpit + dark checkout theming
- licensing: collect card inline when a plan upgrade needs payment
- licensing: collect card inline when a plan upgrade needs payment
- currency: swap CurrencyPipe for MoneyFormatPipe in component imports
- user-status: shared nx-user-status widget adopted app-wide
- currency: centralize money formatting via money pipe and CurrencyFormatterService
- platform: wire feature gates, credit checks, and paid overlays
- admin-panel: add seat transition panel and manual license grant (S17B)
- organization: add billing cockpit and credits usage dashboard (S14/S24)
- nx-licensing: add billing, credits, addons, and enforcement UI (S13–S25)
- nx-licensing: add plan switch dialog, seat count selector and contextual pricing table (S08)
- nx-licensing: add trial state helpers and signal-first trial banner (S06)
- nx-licensing: add NxTrialService, trial plan config and response model (S05B)
- nx-licensing: resolve license state from org effective license (S04)
- nx-admin-panel: add manual license grant/revoke UI to organization licensing tab (S03)
- nx-licensing: extend license model with source and grant fields
- nx-dashboard: enhance analytics chart tooltip with human-readable dates and hour formatter
- nx-dashboard: add CRM KPI cards and Upcoming Snapshot widget with permission-based card selection
- nx-licensing: introduce LicenseFeature enum, feature access utils and NxFeatureGateDirective
- nx-invoicing: add view linked project navigation button in invoice and offer boards
- calendar: add two-week, six-week and quarter calendar views
- profile: wire Device Manager route and settings menu entry
- profile: add Device Manager settings page with session tracking UI
- nx-calendar: add sync source linking UI to edit dialog and filter sidebar
- nx-invoicing: add filter components and NgRx filter state management
- shared: add reusable list header and filter sidebar components
- nx-work-manager: add global worktime-missing banner in topbar
- booking: add Open Graph meta tags for social link previews
- nx-chat: add idempotency key to socket send and REST fallback
- nx-chat: add socket send-message fallback and unread count improvements
- sidebar: redesign navigation sidebar with collapsible layout
- nx-booking: enhance bookings tab with filtering and staff booking creation
- nx-crm: add appointments tab to relationship list widget
- shared: add timezone selector component and update sidebar navigation
- nx-sales-pipeline: update deal details for many-to-many CRM associations
- nx-crm: add company import handler and clean up CRM service
- nx-crm: unify CRM metric cards into compact single row and enhance dashboard charts
- nx-crm: add PRIVATE_CUSTOMER type, CHURN status and CRM field configs
- organization: add enterprise gating and auto-join rules to transcription settings
- organization: add transcription settings page with usage overview
- calendar: integrate live transcript socket and recording playback
- calendar: add transcription settings models, socket service, and HTTP methods
- i18n: add PrimengI18nService for dynamic PrimeNG locale switching
- nx-profile: add paid feature overlay to mailing and calendar sync settings
- nx-api-platform: add paid feature overlay to integration portal and detail pages
- nx-licensing: add reusable NxPaidFeatureOverlayComponent for premium feature gating
- nx-booking: add share link password visibility with reusable nx-SecretField component
- notifications: implemented socket gateway (2)
- notifications: implemented socket gateway
- calendar: add toolbar date navigation popover
- calendar: expand transcript detail and calendar event flows
- nx-calendar-sync: add auto-join rules and i18n improvements
- nx-permissions: add permission presets with translated preview
- nx-global-search: improve search with i18n and working actions
- nx-sidebar: redesign workspace selector and navigation profiles
- nx-calendar: add meeting transcription UI and platform fields
- nx-booking: add booking management and public scheduling UI
- nx-calendar: add guest-to-contact conversion feature
- nx-calendar: add sync badges, filter sidebar, and event overlays
- nx-calendar: add calendar sync settings page and NgRx state
- nx-calendar: wire recurring events, multi-calendar, attachments, and stability fixes
- nx-calendar: add recurring action dialog, DTOs, and calendar models
- nx-work-manager: modernize time/break tracking forms with option cards and collapsible sections
Fix
- licensing: widen plan-switch payment dialog to fit inline card form
- licensing: widen plan-upgrade payment dialog and refresh plan after purchase
- auth: redirect authenticated users off the sign-in route
- login: stale showing forced license modal on login page
- nx-spinner: remove duplicate icon input and mark standalone
- chat: always open conversations fully scrolled to the bottom
- deps: pin @cashwerk/shared-types@1.2.1 from GitHub Packages
- nx-licensing: correct billing cockpit and Stripe return URLs
- nx-booking: resolve public booking asset URLs on the client
- nx-chat: prevent zombie state by refreshing JWT on socket reconnect
- nx-licensing: register de-DE locale, fix license_interval.null label and trial CTA routing
- nx-licensing: propagate translationKey and translationContext from server error responses
- nx-licensing: fix slot update modal stuck in PROCESSING and broken error state
- meetbot: pass occurrence start for recurring event transcription scheduling
- nx-profile: update device settings card to PrimeNG v20 design tokens
- nx-profile: guard device manager against cross-profile session leak
- nx-calendar: correct all-day event end date rendering for non-UTC timezones
- invoicing: board loading fix
- nx-topbar: fix unread chat badge visibility and positioning in topbar
- nx-ai-assistant: fix draggable AI chat button tooltip anchor to target wrapper element
- nx-drive: reset loading state on cache hit in loadOrganizationPossessedDrives
- ui: resolve multiple UI/UX bugs across CRM, drive, notifications, layout and organization
- nx-licensing: migrate all feature gates from deprecated isTrial() to hasAccessToFeature()
- nx-licensing: rewrite LicenseEnforcementInterceptor and fix modal cooldown reset
- nx-shared: add fluid attribute to p-datepicker inputs and sort phone model imports
- nx-shared: correct phone number formatting with plus prefix in feed and text blocks
- nx-work-manager: fix tracking widget duration format, UI redesign and board totals icons
- nx-task-manager: fix tasks not loading on dashboard refresh and list flicker
- nx-drive: fix chunked upload DTO import paths and return type safety
- reccuring-action-dialog: fixed visibility of dialog on action
- tests: restore nx-input and settings-company spec files from master
- project-manager: use correct translation key and icon for portfolio tab
- asset-manager: strip UI-only relational fields from asset API payloads
- nx-invoicing: use reactive isSaving$ pattern for cancellation assignee save
- shift-planner: fixed creation & conversion
- shared: resolve tooltip z-index rendering behind dialogs, drawers and sidebars
- nx-task-manager: resolve NG0201 provider errors for cross-module injections
- security: patch npm vulnerabilities, upgrade NgRx 19→20, remove xlsx
- nx-work-manager: replace endless loading with proper validation on tracking sidebar save
- nx-time-tracking: prevent invalid corrections from saving multi-day trackings
- shared: stabilize worktime missing banner visibility and session sync
- shared: fix memory leaks in global-search, mailing, and upload-container
- nx-calendar: fix mouse tracking memory leak and sidebar header style
- nx-ai-assistant: fix chat window positioning to follow draggable button
- nx-absence-planner: fix absence creation failure and redesign planner UI
- nx-notifications: decrement stats.unread on socketNotificationMarkedRead
- nx-sales-pipeline: remove duplicate loadDeals dispatch on init
- ngrx: harden socket effects and fix list-loading race conditions
- nx-calendar: update transcript detail dialog and model
- nx-sales-pipeline: update stage manager component and deal operations helper
- booking: fix dropdown/datepicker clipping and double-submit in booking system
- core: dialog form reset, router cleanup, error handling, and validators
- nx-invoicing: use createPaymentSuccess action for reliable success detection
- core: fix subscription stacking, event listener cleanup, and timeout leaks
- crm: fix broken HTML, dead styling, and invalid company routerLink
- security: align frontend with backend security hardening
- calendar: calendar tags assigment fix
- sentry: distinguish staging vs production environment
- build: make Sentry sourcemap upload non-blocking in Docker build
- deps: resolve @cashwerk/shared-types from registry, not local symlink
- deps: replace luxon with moment-timezone for consistency
- deps: upgrade @cashwerk/shared-types to ^1.1.0 and add luxon
- deps: upgrade @cashwerk/shared-types to ^1.1.0 and add luxon
- docker: copy scripts/ before npm ci to fix postinstall hook
- nx-chat: use correct NX_CHAT prefix for send-failure toast keys
- sidebar: improve focus profile engine chip selection visibility
- profile: improve worktime model and global search service
- booking: fix availability DTO, invitee locale, and durable confirmation page
- nx-booking: resolve error codes to translated messages and remove duplicate notifications
- nx-crm: normalize phone data and fix flag/area code display across all CRM components
- nx-booking: fix route order and unify public page error states
- nx-booking: improve share link validation and error handling
- nx-booking: fix calendar dropdown showing empty labels and redesign event type drawer
- calendar: add client-side file size pre-validation for attachment uploads
- nx-ui: remove forced border-radius override from global button styles
- nx-booking: refine global button styling to preserve default PrimeNG sizes
- nx-booking: resolve overlay clipping and align drawer headers with corporate identity
- nx-chat: improve chat sidebar mobile overlay appearance
- topbar: redesign mobile menu layout and refactor desktop profile dropdown
- nx-profile: adjust avatar and name spacing in profile view
- nx-api-platform: standardize headers and reduce secondary color overuse
- nx-organization: standardize settings tab headers with icon, title, and subtitle
- nx-feed: replace hardcoded 'Unbekannt' with translation key
- forms: address Bugbot review feedback on nx-input
- nx-drive: use surface-card token for file and folder items
- ui: standardize button variants and fix token usage across modules
- auth: add iOS safe-area insets and dvh viewport support
- nx-chat: hide compact chat rail when nothing to show
- nx-task-manager: wrap long titles on task board cards
- nx-ui: fix tagger i18n and z-index layer adjustments
- nx-dashboard: fix KPI box vs pie chart data inconsistency
- organization: use distinct form keys on company settings fields
- forms: recreate FormControl when nx-input field is replaced
- nx-calendar: fix z-index stacking, styling, and template cleanup
- core: elevate p-datepicker-panel overlay z-index above dialogs globally
- nx-work-manager: forward selected date to tracking/break dialogs and fix negative flag mapping
Perf
- nx-chat: improve virtual scroll rendering and participant list handling
- app: defer heavy UI components and optimize asset/locale loading
- chat: wire CDK virtual scrolling for chat message list
- change-detection: pre-compute deal view model and migrate to OnPush
- pipes: convert impure pipes to pure with explicit dependency params
- rendering: add trackBy to feed, sidebar, and deal-list ngFor loops
- rendering: add trackBy to high-traffic ngFor loops
- core: replace PreloadAllModules with idle/network-aware selective strategy
Refactor
- nx-licensing: remove dead NxSeatCountSelectorComponent and retire PREMIUM tier
- nx-licensing: migrate NxPricingTableComponent to signal-first + trial CTA routing (S05B)
- nx-chat: migrate ChatMessageBubble to signal inputs and signal-first template
- nx-dashboard: rework layout to 4-column CSS Grid with unified design tokens
- nx-licensing: migrate NxTrialBannerComponent to signal-first architecture
- nx-project-manager: sort imports alphabetically in widgets module and dashboard component
- nx-crm: sort imports alphabetically in contact-list and CRM facades
- nx-address: fix country display and normalize parsed addresses to ISO alpha-2
- nx-profile: use PhoneNumberPipe for phone display in profile settings contact
- nx-organization: use PhoneNumberPipe for phone display in employee and contact components
- nx-crm: integrate PhoneNumberPipe and formatPhoneDisplay across CRM components
- nx-shared: improve phone normalization and add formatPhoneDisplay utility
- nx-work-manager: update last-entries-widget template to signal-first control flow
- nx-work-manager: migrate last-entries-widget to signal-first pattern
- nx-chat,nx-booking,nx-api-platform,calendar,asset-manager,nx-notifications,nx-ai-assistant,project-manager: add typed request DTOs for remaining inline endpoints (Roadmap 10 P2/P3)
- crm,nx-sales-pipeline,nx-task-manager: add typed request DTOs for bulk ops and relationship endpoints (Roadmap 10 P1)
- nx-work-manager: add typed request DTOs for time-tracking, work-reports and absence-planner endpoints (Roadmap 10 P0)
- shared,nx-invoicing,nx-mailing: add typed request DTOs for shared and financial endpoints (Roadmap 10 P0/P1)
- nx-invoicing: introduce typed DTOs for invoicing services, actions, and mailing
- nx-profile: introduce typed DTOs for all user profile update endpoints
- nx-auth: introduce typed OTP DTOs and replace inline payload objects
- nx-invoicing: clean up record-payment-dialog imports and remove inline styles
- nx-invoicing: integrate filter sidebar and shared header in listing containers
- nx-invoicing: migrate list headers to shared NxListHeader component
- app: colocate NgRx store modules with their feature modules
- nx-ai-assistant: remove vendor-specific references from comments
- core: add PreloadAllModules strategy and simplify SSO param handling
- crm: replace any-typed feature selectors with CrmState
- ngrx: remove provideHttpClient from all feature store modules
- shared: replace inline not-specified placeholders with shared NxNotSpecifiedComponent
- nx-asset-manager: simplify catalog board tab navigation
- nx-metric-card: consolidate to single surface variant
- nx-booking: redesign booking manage UI to match deal-details design system
- nx-client: improve calendar filter sidebar, tracker control, and metric card components
- organization: improve transcription settings component layout and functionality
- nx-booking: improve public booking pages UX and component structure
- nx-api-platform: replace inline upgrade wall with centralized paid feature overlay
- nx-mailing: improve mail provider item responsive grid layout
- nx-calendar-sync: simplify provider cards to compact row layout
- theming: replace PrimeFlex CSS with token-based compatibility layer
- nx-calendar-sync: simplify calendar sync connection list
- nx-invoicing: set primary variant on invoicing metric cards
- admin-panel: align metric cards with nx-metric-card variants
- organization: migrate overview metrics to nx-metric-card
- dashboard: use nx-metric-card for KPIs and remove unused widget
- crm: centralize metric cards on nx-metric-card
- shared: enhance nx-metric-card with dual variant support
- nx-calendar: reorder toolbar controls, add ViewChild for popover and fix layout
Docs
- replace legacy style guide with scoped nx-client CLAUDE.md
- changelog: update CHANGELOG.md for v1.4.2
Style
- booking: vertically center public booking content
- sales-pipeline: increased column width
- invoicing: simplify document-status panel headers
- ui: remove hardcoded bg-primary-100 from icon containers
- shared: replace deprecated green-500 with success-500 color tokens
- dropdowns: fixing dropdown overflow across components
- booking: adapted public booking pages to smartphone view
- nx-crm: redesign CRM board sidebar and tab system
- theme: soften dark mode borders and add tab design tokens
- nx-booking: use semantic design tokens and soften borders
Tests
- breakpoints: added classifier for unit testing breakpoints
- auth: fixed auth & http handling in unit tests
- nx-organization: add missing hasAccessToFeature mock in transcription component spec
- jest-units: added & updated unit tests for claendar & shared
- jest: switched unit testing from karma to jest
- calendar: add regression tests for nx-calendar component
Continuous Integration
- release: auto bump+tag on merge to master, trigger changelog site rebuild
Notable
- release: 1.6.0 [minor]
- build: remove stray root Dockerfile, point README at prod.dockerfile
- demo-link: updated demo link (still static)
- licensing: removed license id from user creation & invitation flow + added license price fallback for freemium
- deps: consume @cashwerk/shared-types v1.2.0 from GitHub Packages
- update changelog workflow and package-lock
- package: added ngrx/signals for new ngrx store management
- data-col: adding data col attributes for e2e
- unit-testing: added more karma unit tests
- tests-removal: removed default broken unit tests
- workspace: modernize Angular schematics defaults to standalone + OnPush
- booking: date overridal dialog visual issue
- release: v1.5.0
- nx-client: align build tooling for booking rollout
Other
- chart.js: added charts package
- chore(state-management): fixed state management rendering bugs / race conditions
- admin-panel: refactored demo data seeder tool for more interactive ai dataset generation & images
- unit-testing: added further unit tests
- - Replaced file: response.data?.file ([]
- a three-state model ('has' ([ 'missing' ] 'missing' ))
- - Fix JWT refresh interceptor (BehaviorSubject<string ([ null ] null ))
Backend v1.6.0
New
- licensing: sync only seat_based_v2 catalog; tag staging; add live setup script
- licensing: collect card inline for card-less plan/seat changes, fix webhook-gap stranding
- platform: enforce plan limits, feature tiers, and credit gates
- nx-licensing: add credit pool, addons, plan limits, and migrations S10–S16
- nx-licensing: complete ILicense domain model with trialEndsAt, grant and downgrade fields
- nx-licensing: add PromoteLicenseToOrgPrimaryCommand and enforce org-wide license invariant
- nx-licensing: introduce LicensingException base class and standardise exception hierarchy
- nx-licensing: add ChangePlanCommand, UpdateSeatCountCommand and webhook seat sync (S07)
- nx-licensing: expose POST /licensing/start-trial endpoint (S05B)
- nx-licensing: add StartPlanTrialCommand and domain trial config (S05B)
- nx-licensing: wire trialEndsAt through handlers, repository and cron (S05)
- nx-licensing: introduce isFreePlan/isInTrialPeriod and update guards (S05)
- nx-licensing: add trialEndsAt, isOrgPrimary and effectiveLicenseId schema (S05)
- nx-admin-panel: add AdminLicenseGrantController for manual license grant/revoke (S03)
- nx-licensing: add GrantManualLicenseCommand and RevokeManualLicenseCommand (S03)
- nx-organization: enforce org-level seat capacity check on user invitation (S03)
- nx-licensing: add OrganizationAtCapacityException and tier-resolution utils (S03)
- nx-licensing: make NxLicense.priceId nullable for manual grants (S03)
- nx-licensing: implement org-level license model with dual-read bridge and auto-assign (S02)
- nx-admin-panel: add early-adopter license migration endpoint
- nx-licensing: add licenseSource/grant columns, extend entity, repositories and Stripe webhook handler
- nx-dashboard: add CRM KPIs (won deals, new contacts this month) to dashboard handler
- nx-shared: add centralized country ISO normalizer, DTO validator, and data migration
- nx-seeder: add booking and drive factories with major demo data seeder enhancements
- nx-shared: add normalizeIPhone server-side utility and NormalizePhoneNumberData migration
- auth: add device manager i18n keys for session/device UI (de, en, sv)
- auth: implement session tracking, GeoIP enrichment and persistent JWT sessions
- auth: add NxUserSession entity, repository, and migration for persistent session tracking
- nx-calendar: enrich calendar list with sync provider summaries
- nx-crm: support tag name resolution and external references on all import paths
- shared: add filter fields to TablePaginatorDto
- i18n: add error translation keys for cross-tenant violations and invalid PDF tokens
- i18n: add absence planner translation keys
- security: global auth guard, PDF token system, file access hardening
- booking: add OG preview endpoint for social link previews
- nx-chat: add idempotency key dedup for send-message
- nx-chat: optimize unread counts and add send-message resilience
- nx-chat: enhance chat controller with extended message DTO
- nx-booking: add source tracking and enhance staff booking creation
- nx-crm: add appointment query endpoints for contacts and companies
- api-platform: add ExternalApi decorators for booking and chat endpoints
- calendar: handle Microsoft delta link expiry with graceful full resync
- nx-sales-pipeline: migrate deal CRM associations to many-to-many relations
- i18n: add booking error codes, public booking and reminder translations
- nx-crm: add find-or-create company on import, enhance DTOs and export fields
- nx-crm: enhance CRM metrics with CHURN tracking and type-safe status counts
- nx-crm: add CHURN status, PRIVATE_CUSTOMER contact type with migrations and translations
- nx-booking: add translation keys and test suites
- i18n: add transcription settings and usage translation keys
- meeting-transcription: wire settings, usage metering, and observability
- meeting-transcription: add org settings and usage metering entities
- i18n: add CALENDAR.ATTACHMENT_TOO_LARGE translation keys
- nx-i18n: add paid feature overlay translation keys
- nx-licensing: restrict email and calendar API endpoints to paid licenses
- nx-licensing: enhance PaidLicenseAccessGuard with i18n support and feature metadata
- notifications: implemented socket gateway
- nx-audit-log: add missing audit strategies for unhandled entity types
- nx-meeting-transcription: add AI transcript task extraction
- nx-calendar: add meeting platform fields and sync improvements
- nx-meeting-transcription: add Recall.ai bot transcription module
- nx-booking: add booking module and production-safe schema
- nx-calendar: add guest-to-contact conversion backend
- nx-calendar: add syncInfo enrichment to calendar event API
- nx-calendar: add bidirectional calendar sync engine
- nx-calendar: add calendar sync entities, migration, and enums
- nx-calendar: wire occurrence endpoints, multi-calendar, RSVP per-occurrence, and mail attachments
- nx-calendar: add recurring event exceptions, occurrence service, and Drive integration
- nx-work-manager: add translation keys for time-tracking option cards and collapsible section
Fix
- licensing: set live product description + marketing_features in catalog setup
- nx-licensing: fixed stripe cronjob for expired licenses (stripe counter check added) & license upgrade fixed from trial
- licensing: make plan upgrades payment-safe via webhook-authoritative promotion
- migration: run AddCalendarOverlapIndex outside a transaction
- chat: strip TypeORM inverse refs before broadcasting messages over socket.io
- licensing: activate freemium without capturing a payment method
- ai-engine: keep SSE stream alive and switch to gemini-2.5-flash
- deps: pin @cashwerk/shared-types@1.2.1 from GitHub Packages
- nx-booking: resolve reused slugs to the current published page
- nx-licensing: restore feature tier gates after S16 org-level cutover
- nx-booking: build absolute public file URLs for logos and avatars
- audit-log: correct purge cron SQL and disable by default
- nx-licensing: resolve S09E regressions in seat management and admin grant
- nx-licensing: harden plan-change lifecycle and webhook handling
- meetbot: add partial unique indexes for per-occurrence transcript isolation
- meetbot: resolve stuck PROCESSING and add occurrence-aware scheduling
- nx-admin-panel: remove early-adopter migration endpoint
- nx-licensing: add licenseSource guard to subscription_schedule.canceled webhook
- nx-auth: resolve JTI mismatch, refreshToken race condition and missing IP/UA on onboard
- nx-calendar: correct all-day event outbound end dates for Google, MS & CalDAV
- nx-work-manager: fix cascade deletions and query handler bugs across modules
- nx-crm: fix archived view and enforce soft-delete invariant in demo seeder
- nx-invoicing: sanitize XSS in invoice header/footer and handle missing invoice lines
- security: add global null-byte sanitization and enforce API key org isolation
- i18n: add missing drive empty-state translation keys
- nx-crm,nx-invoicing,nx-import: normalize phone formatting and use normalizeIPhone utility
- seeders: restore missing logProgress method on BaseFactory
- nx-work-manager: fix total time/break calculation excluding cross-midnight entries
- calendar-sync: updated attendee resolver
- nx-work-reports: fix 500 error on PDF export and user-not-found handling
- nx-absence-planner: fix 500 errors on PATCH/approve/reject endpoints
- nx-work-manager: add class-validator decorators to ExportReportDto
- nx-invoicing: add UpdateInvoiceDTO and UpdateOfferDTO for partial PATCH validation
- dto-drift: fixing dto drifts accross invoicing & crm
- shift-planner: fixed creation & conversion
- deps: upgrade prettier to v3 to resolve peer dependency conflict
- repositories: cast CASE THEN values to integer in bulk position updates
- migrations: resolve timestamp collisions and apply DB schema cleanup
- security: patch critical npm vulnerabilities and harden server config
- auth: serialize /auth/me response to include computed latestWorkTime
- migrations: resolve timestamp collision, split jsonb DDL, add zero-downtime performance indexes
- security: dedupe IDs in cross-tenant guards and harden PDF token key validation
- nx-meeting-transcription: update transcript repository query
- nx-sales-pipeline: add missing fields to CreateDealRequestDto
- nx-work-manager: worktime safety net — prevent silent failures when no worktime configured
- nx-chat: add uploadedBy ownership check to chat attachments
- security: cross-tenant IDOR prevention + SQL injection sort whitelists
- calendar: calendar tags assigment fix
- sentry: distinguish staging vs production environment
- deps: add isomorphic-fetch required by Microsoft Calendar Sync driver
- migrations: use raw SQL instead of entity repository in CalendarModuleEnhancements
- deps: regenerate lockfile to restore pruned transitive dependencies
- deps: resolve @cashwerk/shared-types from registry, not local symlink
- deps: upgrade @cashwerk/shared-types to ^1.1.0
- docker: increase builder heap to 4GB for TypeScript compilation
- nx-booking: emit outbound sync trigger and defer emails for meetingUrl backfill
- nx-calendar: add timeout protection for sync driver API calls
- nx-calendar: improve type safety in Microsoft delta expiry check
- booking: fix cancellation email URLs, add Sentry to cancel emails, extend reminder window
- nx-booking: improve error handling in command handlers and add test suites
- nx-data-import: fix chunked import validation and add PRIVATE_CUSTOMER parsing
- nx-booking: resolve custom field labels in booking confirmation emails
- nx-booking: fix booking creation, validation, and query issues
- nx-calendar: resolve circular dependency in calendar OAuth service
- nx-api-platform: auto-disable Lexware sync after consecutive auth failures
- nx-api-platform: cache encryption key and suppress repeated dev warnings
- calendar: harden sync pipeline for production multi-user load
- calendar: add Sentry breadcrumbs and structured error logging
- nx-i18n: add ~84 missing feed translations and fix German grammar
- nx-audit-log: add missing archived/restored actions to invoice strategies
- nx-audit-log: replace hardcoded entity name fallbacks with neutral format
- nx-i18n: correct drive name translations and add calendar drive label
- nx-i18n: add missing translation keys for new features
- nx-ai-engine: stabilize SSE response lifecycle under Fastify
- nx-work-manager: keep paused end-time when stopping trackers
- nx-calendar: harden Microsoft sync and calendar OAuth edge cases
- nx-calendar: add explicit event emission for outbound sync bridge
- i18n: fix typo in BIRTH_DATE_UPDATED and add NO_ACTIVE_LICENSES key
- api-platform: prevent inbound sync from overwriting CRM contact/company numbers
Perf
- calendar: cut dashboard/calendar query load
- infra: codify Cloud Run --concurrency, cap max-instances to DB ceiling
- notifications: compute stats in one indexed grouped query
- dashboard: delegate revenue KPI to shared GetRevenueSummary query
- database: increased poolSize to 30 => moved from hardcoded to dynamic env var
- nx-invoicing: add missing cancellation_invoice_id index and translations
- nx-invoicing: optimize queryAll with scalar subqueries and full sort/filter support
- chat: batch WebSocket presence updates to reduce broadcast storm
- server: entity indexes, eager flags, take caps, tag filter SQL pushdown, audit-log params
- server: replace blocking Redis KEYS with SCAN and remove in-memory ZIP buffering
- server: add hard take limits to unbounded audit-log and permission queries
- server: parallelize calendar notifications and batch Redis unread updates
- server: eliminate N+1 queries across invoicing, project, and user modules
Refactor
- nx-user: remove per-user license assignment (S16 cutover)
- nx-licensing: migrate remaining handlers and module to LicensingException base class
- nx-address: enforce ISO country normalization at DTO gateway and eliminate duplicate normalizers
- typeorm: normalize FK column types and add missing entity-level metadata
- server: replace let with const for never-reassigned variables
- nx-sales-pipeline: replace inline filter type and 'as any' cast with GetDealsFilterDto
- integrity: type safety, advisory lock registry, sort models, i18n keys
- nx-calendar: improve calendar event create and update handlers
- nx-time-tracking: improve tracker command handlers and repository
- nx-booking: improve availability service, host selection, and booking handlers
- nx-booking: replace password hash with plain secretPhrase for share links
- nx-server: improve config typing and code cleanup
Docs
- api-platform: add connector author guardrail README and release-gate script
- changelog: update CHANGELOG.md for v1.4.2
Tests
- meeting-transcription: provide credit-pool and addon repo mocks
- nx-licensing: add unit tests for new command handlers and utils
- nx-licensing: add webhook quantity sync integration test (S09)
- fix e2e test suite setup and align security, integration and performance tests
- auth: add authorization boundary e2e tests and multi-user API helpers
- nx-work-manager: align e2e tests to use expectCreated for POST responses
- env: added test environment scripts & shell
- unit-testing: removed / modified & added new unit testing spec files
- calendar: add edge-case tests for occurrence expansion and RSVP handler
- api-platform: add regression tests for inbound sync number preservation
Continuous Integration
- release: auto bump+tag on merge to master, trigger changelog site rebuild
Notable
- release: 1.6.0 [minor]
- stripe: centralized stripe api version & webhook command added
- ignore local .env secret files and add nx-server CLAUDE.md
- dev: added type check commands & decreased nodemon
- test: updated the seed data for auth in e2e
- licensing: remove staging pre/postflight SQL scripts
- i18n: add licensing, credits, and plan-limit translation keys
- deps: consume @cashwerk/shared-types v1.2.0 from GitHub Packages
- nx-licensing: remove seed scripts; DB sync handled by Stripe cron
- nx-licensing: deprecate LicenseType.TRIAL with Phase 2 migration note
- package: added ngrx/signals for new ngrx store management
- nx-shared: add libphonenumber-js dependency and fix UpdateAddPhone DTO
- nx-server: alphabetize imports across CRM, organization, user modules and seeders
- demo-seeder: added more factories for demo seeder
- missing-translations: added missing invoicing translations
- booking: form field save error fix
- release: v1.5.0
- add CRM metadata endpoint, update task search DTO and remove obsolete migration
- nx-server: update user repository interface and cursor config
- nx-server: align shared-types and maintenance scripts
- nx-calendar: add calendar sync translations and dependencies
- nx-calendar: add database migrations and update dependencies
- nx-calendar: backfill calendar translation keys for de, en, sv
Other
- PLAN_DOES_NOT_ALLOW_TRIAL ([ ALREADY_HAS_ACTIVE_TRIAL ] ALREADY_HAS_ACTIVE_TRIAL ))
- - TrialLimitGuard: bypass when !isFreePlan(pkg) ([]
- admin-panel: added new & updated existing factorys & seeders for admin panel tool
- admin-panel: refactored demo data seeder for new architecture & better quality examples
- e2e: added nestjs e2e unit tests
- unit-testing: added further e2e unit nestjs tests
- drive-folder: updated relation ids of drive folder to nullable
- container: increased cpu to 2 added --no-cpu-throttling & --cpu-boost
- - Calendar event repository: cap take to Math.min(dto.take ([]
- nx-chat: add missing NX_CHAT translation keys for DE/EN/SV
- nx-booking: add translation keys for booking and CRM features
- nx-asset-manager: rename Material to Produkt and add summary keys
Backend v1.4.2
New
- nx-admin-panel: add analytics API with metrics, activity sorting, and cross-org user queries
- i18n: add German translations for chat format and clipboard keys
- i18n: add GENERAL.DATE translation key for German locale
Fix
- nx-calendar: expose creator in event response DTO and eager-load relation
Docs
- changelog: update CHANGELOG.md for v1.4.1
Notable
- release: 1.4.2 [patch]
Frontend v1.4.2
New
- nx-admin-panel: add analytics dashboard with KPIs, charts, and organization activity tracking
- nx-chat: add drag-to-resize handle on chat message input
Fix
- nx-calendar: scope filter-sidebar styles to prevent global CSS leakage
- nx-time-tracking: restore live millisecond updates in tracker control
- nx-chat: append dialogs to body and use correct theme token for dialog background
Refactor
- nx-calendar: redesign event form schedule section with symmetrical layout
- nx-global-notifications: simplify template and update notification styles
Docs
- changelog: update CHANGELOG.md for v1.4.1
Style
- nx-chat: update chat bubbles, link previews, and theme tokens
- z-index: fixed z-index order of dialogs especially in nx-chat
Notable
- release: 1.4.2 [patch]
- momentjs: added default datetime service to tracking toolbar & initial language setup
Backend v1.4.1
Notable
- release: 1.4.1 [patch]
Backend v1.4.0
Notable
- release: 1.4.1 [patch]
Backend v1.3.1
New
- i18n: add NX_CHAT section labels for chat list
Fix
- nx-crm: add error handling and structured response for contact/company imports
- nx-server: coalesce null values in create handlers to prevent NOT NULL violations
Refactor
- nx-data-import: use CQRS CommandBus instead of direct repository access
Notable
- release: 1.3.1 [patch]
Frontend v1.4.1
New
- nx-chat: sectioned conversation list and compact sidebar UX
- nx-chat: add drag & drop file upload with image thumbnails
- nx-chat: add markdown rendering with DOMPurify sanitization
- nx-data-importer: improve chunked import with error handling and logging
Fix
- ui: calendar, CRM, AI, pipeline, and project markup/styles
- ui: align global z-index, theme tokens, and app shell styles
- nx-drive: restore file viewer translucent background overlay
- nx-client: add null safety guards to prevent runtime errors
- nx-client: update sidebar and dialog widths from rem to vw for responsive layout
- nx-client: comprehensive dark mode theme improvements
Docs
- changelog: update CHANGELOG.md for v1.4.0
Notable
- release: 1.4.1 [patch]
Backend v1.3.0
New
- i18n: add NX_CHAT section labels for chat list
Fix
- nx-crm: add error handling and structured response for contact/company imports
- nx-server: coalesce null values in create handlers to prevent NOT NULL violations
Refactor
- nx-data-import: use CQRS CommandBus instead of direct repository access
Notable
- release: 1.3.1 [patch]
Frontend v1.3.1
Notable
- release: 1.4.0 [minor]
Frontend v1.3.0
Notable
- release: 1.3.1 [patch]
Frontend v1.4.0
Notable
- release: 1.4.0 [minor]
Frontend v1.2.0
New
- nx-input: add address autocomplete selection validation with visual feedback
- nx-asset-manager: add duplicate detection and import update/upsert for all asset types
- nx-crm: add batched import with progress, address normalization, and country ISO resolution
- nx-data-importer: add duplicate detection, import modes, and data transformer support
- nx-project-manager: add rich empty state placeholders for project metrics
- nx-invoicing: improve cancellation overview with HTML rendering and collapsible lines
- nx-invoicing: add XInvoice/ZUGFeRD download support for cancellation invoices
- nx-project-manager: add project metrics tab with KPIs, charts, financial analysis and hover effects
- nx-feed: add custom feed entries with standalone dialog components
- ai-engine: added performance caching, compression & advanced security layers
- nx-sales-pipeline: add entry-point type filtering for sales vs support pipelines
- nx-sales-pipeline: add dealReason input with autocomplete in deal details
- nx-sales-pipeline: add nx-pipeline-priority component for quick priority changes
- nx-sales-pipeline: add PipelineTerminologyService for multi-pipeline support
- nx-sales-pipeline: add PipelineTermPipe and IsCostBasedPipe for dynamic terminology
- nx-ai-assistant: add image attachment support in chat
- nx-ai-assistant: added voice feature for the ai assistant casper
- nx-ai-assistant: add copy button to chat messages
- nx-invoicing: add toggle switch to enable/disable skonto
- auth: handle SSO access denied errors
- nx-crm: add external references and improve UI
- nx-crm: add tag filtering to crm export panel
- crm: improve address import handling
- crm: add search and reorderable columns to relationship list
- nx-editor: enhance image handling and security
- nx-text-blocks: enhance text block system and editor integration
- nx-ai-assistant: implement permission-based access control
- access-control: sync permission enums with server and update references
- nx-drive: add loading animation and subfolder support to folder chooser
- nx-crm: add centralized field configuration for exports
- nx-data-exporter: add CRM exporter with combined export support
- nx-crm: add CRM reports module with unified export panel
- nx-ai-assistant: add SSE streaming support for real-time AI responses
- nx-sales-pipeline: implement debouncing for deal updates and improve state preservation
- nx-client: add organization dropdown menu and fix sidebar active state styling
- nx-crm: add number conflict confirmation dialog for companies and contacts
- nx-shift-planner: add color mode switch for timeline events
- nx-shift-planner: implement absence creation, conversion, and context menu from timeline
- nx-calendar: add collapsible calendar list and sorting functionality
- nx-profile: allow admins to change other users' profile images
- nx-drive: add optimized trash endpoint integration
- nx-invoicing: improve payment tracking with Mark as Paid button
- nx-organization: add double-click protection guards to UI components
- nx-organization: add granular loading flags for branch/sector operations
- nx-drive: implement upload strategy matrix with batch support
- nx-drive: improve upload container UI and batch upload support
- nx-drive: integrate unified drive view in NgRx state
- nx-crm: implement centralized phone and address parsing for CSV imports
- nx-data-importer: add unified import architecture with chunked import and AI services
- nx-text-blocks: add AI generation and redesign text block editor dialog
- nx-sales-pipeline: add loading state for offer creation from deal
- nx-admin-panel: add set headquarters option for branches
- nx-drive: implement folder upload with drag & drop support
- nx-client: sync business fields and add onboarding filter
Fix
- nx-crm, nx-asset-manager: add skippedIndices to importUpdate HTTP method return types
- nx-asset-manager: use skippedIndices for correct upsert filtering
- nx-crm: use skippedIndices for correct upsert create-phase filtering
- nx-crm: add null safety guards for getUserData() calls
- nx-crm: fix non-functional tagger in export panel by using allowCreate
- nx-invoicing: fix payment terms accordion state and invoicing type defaults
- scss: migrate deprecated darken/lighten to sass:color module
- nx-invoicing: fix VAT calculation returning zero for cancellation invoices
- nx-project-manager: fix change detection in project documents tab
- theme: fix PrimeFlex surface-hover producing black background in light mode
- nx-time-tracking: add null safety for tracking and break arrays
- nx-crm: fix date mutation in metrics navigation
- nx-ai-assistant: restore glassmorphism and fix sidebar layout
- nx-ai-assistant: improve UI design with z-index fixes and glassmorphism consistency
- nx-crm: make company email field optional in forms
- data-importer: fixed dynamic data handling @ importer
- nx-crm: fix removal of social media and external references
- auth: handle disposable email error in onboarding
- asset-manager: persist selection across pagination and add reset feature
- nx-invoicing: fix frozen header state on creation validation error
- ui: enable profile verification badge and error icons
- nx-editor: prevent editor collapse when opening dialogs
- nx-data-importer: display translated enum values in import preview
- nx-task-manager: add optional breadcrumb to task board
- nx-project-manager: fix archived project banner display
- nx-profile: fix feed isolation and navigation state
- nx-task-manager: adjust task board height and sidebar scroll
- project-manager: correct portfolio column header translation key
- calendar: ensure holidays load for all visible years in view
- nx-time-tracking: allow editing of start/end time based on permissions
- nx-organization: fix text block editor dialog styling
- nx-data-exporter: prevent multiple confirm dialogs on close
- nx-invoicing: fix invoice.total variable showing date instead of currency
- nx-ai-assistant: fix entity preview persistence across conversations
- nx-organization: add defensive null checks for invited user display
- nx-organization: resolve NG01002 form error on cancel with nullish coalescing
- nx-crm: include companyNumber field in company update form
- nx-crm: fix selection count and add reset selection button for company/contact lists
- nx-absence-planner: fix duplicate notifications and endless sidebar loading
- shifting-timeline: fixed minor property access error & employee color changes
- nx-work-manager: guard timeline handlers against missing events
- nx-shift-planner: fix timeline resource display and scrolling
- nx-work-manager: fix sidebar stuck in loading state after tracking update
- nx-invoicing: fix assignees not saving from offer/invoice editors
- nx-drive: resolve PDF viewer Transport destroyed race condition
- nx-invoicing: resolve Net/Gross toggle crash in invoice lines form
- menu-frame: fix invalid pStyleClass @ancestor selector
- nx-drive: fix null pointer errors in share center and state management
- nx-drive: map complete drive fields for sidebar navigation
- nx-client: fix navigation routes for license and settings
- calendar: filter sidebar and create event dialog improvements
- calendar: fix filter race condition causing filters to not apply
- calendar: add validation and proper error handling to event creation dialog
- nx-invoicing: add double-click prevention to all header components
- nx-drive: map isShared, tags, driveId from backend response
- nx-drive: add null safety checks for file.file.objectId
- nx-crm: fix race condition in phone input component initialization
- nx-client: fix Observable completion in ClientManagerService
- nx-asset-manager: fix import services and add import handlers
- nx-crm: fix company and contact list auto-refresh after import
- nx-invoicing: fix invoice line responsive layout alignment
- nx-invoicing: improve form validation with specific error messages
- nx-notifications: improve tooltip z-index, icons, and infinite scroll
- dashboard: enable dynamic date localization in dashboard and month selector
- nx-client: resolve organization navigation bug in sidebar
- nx-work-manager: update time tracking chooser component
- nx-client: fix Sentry user context race condition with sentryReady$ signal
- nx-crm: fix PrimeFlex hover:surface-hover applying dark colors in light mode
- nx-client: reorder providers to fix Sentry user context not being set
- styles: add global tooltip styling for light mode
- editor: scope tooltip styling to editor toolbar only
- notifications: use p-toggleSwitch instead of deprecated p-inputSwitch
- nx-client: fix table layout overflow in editor and project info components
- ci: add GitHub Package Registry auth for @cashwerk/shared-utils
Perf
- nx-ai-assistant: optimize streaming performance and add rich activity indicators
- nx-work-manager: optimize last entries widget with single API call (N+1 fix)
Refactor
- shared: extract splitStreetAndNumber as shared utility function
- nx-tags: optimize tagger with debounced search, local caching, and theme-aware styling
- nx-sales-pipeline: migrate components to use terminology pipes
- nx-ai-assistant: centralize entity routing in frontend
- nx-crm: consolidate field definitions to single source of truth
- nx-crm: remove export buttons from list headers
- nx-project-manager: replace hardcoded text with translations in portfolio widget
- nx-admin-panel: update organization overview with CRM-style metrics
- nx-organization: redesign overview tab with CRM-style metrics
- nx-client: standardize severity colors to use PrimeNG variables
- profile: simplify effects by removing redundant inner switchMap
- calendar: fix load effects to use switchMap instead of exhaustMap
- nx-organization: add double-click protection to settings-permissions
- nx-access-control: migrate write operations to exhaustMap for Phase 2
- nx-ai-assistant: migrate write operations to exhaustMap for Phase 2
- nx-profile: migrate write operations to exhaustMap for Phase 2 completion
- nx-organization: migrate effects from switchMap to exhaustMap for race condition protection
- asset-manager: add double-click protection to all UI components
- asset-manager: migrate all effects to exhaustMap for write operations
- nx-work-manager: migrate write operations to exhaustMap for race condition prevention
- nx-sales-pipeline: migrate to exhaustMap for race condition protection
- nx-task-manager: migrate to exhaustMap and add double-click protection
- project-manager: full vertical migration for race condition prevention
- crm: migrate write operations to exhaustMap for race condition prevention
- nx-invoicing: migrate write operations from switchMap to exhaustMap
- nx-drive: migrate effects to use proper RxJS operators
Docs
- changelog: update CHANGELOG.md for v1.1.10
- changelog: update CHANGELOG.md for v1.1.9
Style
- nx-project-manager: improve contact card hover state
- nx-profile: improve company tab styling
- common: fix code formatting and whitespace
- nx-client: add togglebutton theme customization for dark mode
- nx-client: add border color utility classes
- severity-colors: replaced green, yellow, red with severity colors
- nx-sales-pipeline: adjust deal details slider thumb styling
- crm: adjust company avatar sizing and add paddingClass input
- nx-task-manager: remove redundant border class from my-tasks container
- profile: remove fixed font-size from time separator
Build System
- increase Node.js memory allocation for dev server
Notable
- release: 1.2.0 [minor]
- nx-client: update dependencies
- layout: remove sales pipeline from sidebar
- nx-data-exporter: fix formatting and whitespace
- common: update permissions, sidebar, and minor fixes
- deps: pin fullcalendar versions
- nx-client: minor formatting and whitespace cleanup
- nx-drive: temporarily disable cloud storage upgrade button
- update package dependencies
- nx-client: disable NgRx StoreDevtools for performance
Revert
- nx-client: revert CSS order change that caused sidebar spacing issues
Other
- Revert feat(ai-engine): failed commits
- ai-assistant: reworked tool naming to dynamic labeling by ai
- event-driven-arch: implemented full event-driven architecture & adapted audit log system + AI Tool handling
Backend v1.2.0
New
- nx-i18n: add address validation translation keys
- nx-asset-manager: add batch import-update endpoints for all asset types
- nx-crm: add batch import-update endpoints for companies and contacts
- nx-data-import: add duplicate detection, number cycles, address parsing, and country normalization
- nx-project-manager: add translation keys for metrics empty state placeholders
- nx-invoicing: add XInvoice/ZUGFeRD generation for cancellation invoices
- nx-project-manager: add project metrics API with time tracking and shift plan query endpoints
- nx-feed: add custom feed entry support with CRUD endpoints
- nx-events: add audit change configs and i18n for asset and tax entities
- nx-invoicing: migrate tax rate and sales tax regulation controllers to CQRS
- nx-asset-manager: migrate all asset controllers to CQRS pattern
- nx-i18n: add granular feed description translations for all entity types
- nx-events: centralize auto-change-detection in NxCommandBus via entity registry
- audit-log: implement granular change tracking with smart strategy ordering
- ai-engine: added performance caching, compression & advanced security layers
- nx-sales-pipeline: support JSONB legacy stages in reorder command
- nx-i18n: add AI assistant streaming activity translations
- nx-sales-pipeline: add dealReason field with autocomplete support
- nx-i18n: add dynamic terminology translations for all pipeline types
- nx-sales-pipeline: add TICKET_NUMBER cycle for support pipelines
- nx-ai-engine: add image attachment support with vision capabilities
- nx-work-manager: add AI tools to work manager handlers
- nx-invoicing, nx-task-manager, nx-sales-pipeline: add AI tools to business modules
- nx-crm, nx-calendar: add AI tools to CRM and Calendar handlers
- nx-ai-engine: add DTO introspection for AI tool parameters
- nx-ai-assistant: added voice feature for the ai assistant casper
- nx-ai-engine: add DTO introspection and improve AI tool execution
- user: implement account deletion request
- auth: implement disposable email validation
- nx-crm: add external references support
- nx-crm: implement tag filtering for crm export
- nx-invoicing: implement html sanitization for invoice content
- access-control: add AI Engine permissions and translations
- access-control: add CRM export permissions
- nx-pdf-engine: add CRM export PDF templates
- nx-crm: add CRM export services for CSV and PDF generation
- nx-ai-engine: enhance Casper with streaming, web search, and RAG
- nx-ai-engine: add AI metrics service with OpenTelemetry
- nx-ai-engine: add Google Custom Search API for web grounding
- nx-ai-engine: add RAG infrastructure with pgvector embeddings
- i18n: update project manager translation keys
- nx-i18n: add translation keys for organization dashboard
- nx-i18n: add sidebar navigation translations for organization menu
- nx-crm: add translations for number conflict confirmation dialog
- nx-crm: add duplicate number detection with increment suggestion for companies and contacts
- nx-absence-planner: fix user assignment and add translations for timeline features
- nx-translations: add custom sorting translation key
- nx-drive: add German translations for trash functionality
- nx-drive: add German and English translations for Drive module
- nx-drive: add dedicated trash endpoint with optimized queries
- nx-drive: add localized in-app notifications for drive sharing
- nx-invoicing: add payment tracking translations
- nx-drive: implement streaming upload with race condition prevention
- nx-drive: add tags, isShared, driveId to drive view API response
- nx-drive: add batch upload endpoint for small files
- nx-drive: add unified drive view endpoint for Phase 1.1
- nx-crm: enhance CSV import processor to handle phone and address fields
- nx-data-import: add data import module infrastructure
- nx-ai-engine: add AI data import service for column matching
- nx-text-blocks: add translation keys for AI generation mode
- translations: add form validation error translation keys
- nx-drive: implement folder upload with auto-rename for duplicates
- nx-server: add missing organization audit feed translations
- nx-calendar: implement default calendar creation for organizations and users
- nx-server: expand BusinessField enum with comprehensive industry list
- nx-server: add German translation keys for OTP verification
Fix
- nx-crm, nx-asset-manager: return skippedIndices from import-update endpoints
- finax: fix duplicate buyerReference fallback and extract shared error formatter
- nx-ai-engine: add system instruction and HTML output to editor text generation
- nx-asset-manager: use real organization ID in getById endpoints for service, machine, and subcontract
- nx-invoicing: auto-generate PDF when creating ZUGFeRD for cancellation invoices
- nx-time-tracking: fix AI tool field mapping for stop and get-running tracker
- nx-ai-engine: fix bigint type coercion in conversation ownership checks
- nx-licensing: correct inverted freemium check in TrialLimitGuard
- nx-cqrs: add null-safety guards and entityId validation in NxCommandBus
- nx-sales-pipeline: restore rich feed descriptions for deal stage moves
- shared: update DTOs with AI property decorators
- nx-invoicing: enforce required fields in invoice DTOs
- nx-crm: make company email field optional
- data-importer: fixed dynamic data handling @ importer
- nx-user: update account deletion to anonymize and remove user
- auth: validate user status in SSO and include REMOVED status
- nx-licensing: add missing CRM export permissions to database
- crm: correct address type in create dtos and controllers
- crm: fix search filtering for relationship queries
- nx-invoicing: enrich invoice cancellation audit log
- nx-calendar: improve audit logging and deleted event handling
- nx-calendar: improve event query for recurring events
- nx-ai-engine: enable AI to create recurring calendar events
- nx-crm: improve CRM export with filters and memory optimization
- nx-invoicing: fix invoice.total variable showing date instead of currency
- nx-organization: remove redundant interceptor on inviteUser endpoint
- nx-auth: stabilize Apple SSO via server-side token exchange
- nx-work-manager: add missing project, task, and projectImage relations to tracking queries
- nx-invoicing: fix assignees persistence and validation in offer patch handler
- nx-drive: add parentFolderId to models and filter trashed from shares
- nx-drive: fix folder color handling in create folder command
- nx-drive: include personal drive in sidebar navigation
- nx-calendar: query DTO and controller improvements
- i18n: add missing calendar error message translations
- project-manager: update audit log action and add translation
- nx-invoicing: add missing INVOICE_CREATED enum value to offers document state
- nx-crm: make company import DTO fields optional
- nx-asset-manager: fix service import to return created services
- nx-notifications: add missing notification translations
- nx-organization: correct audit log action type for logo update
- project: load company logo and contact avatar in getProjectCustomer
- project: load customer/contact image relations in project repository
- ci: add GitHub Package Registry auth for @cashwerk/shared-utils
Perf
- nx-drive: fix critical memory leak in folder/subfolder queries
- nx-drive: add indexes and optimize folder queries
- nx-pdf-engine: add browser pool with semaphore concurrency control
- nx-drive: optimize share operations with bulk queries and recursive CTE
- nx-drive: use lightweight drive queries in command handlers
- nx-drive: add database indexes for folder/file queries
- nx-server: add database indexes for frequently queried columns
- nx-server: remove eager loading from TypeORM entity relations
Refactor
- nx-cqrs: remove redundant withChangeDetection from handlers
- nx-project-manager: simplify command patterns with DTO-based architecture
- nx-crm: simplify command/query patterns with DTO-based architecture
- nx-ai-engine: cleanup legacy code and update core services
- nx-ai-engine: modularize AI engine into specialized services
- nx-cqrs: enhance unified decorators with aiTool support
- nx-calendar: simplify calendar event creation handler
- nx-pdf-engine: simplify browser pool with idle timeout
Docs
- changelog: update CHANGELOG.md for v1.1.9
Notable
- release: 1.2.0 [minor]
- nx-server: update dependencies
- nx-server: add missing German translations for text blocks
- nx-ai-engine: disable tool registration logging
- nx-server: update translations and instrumentation
- common: update server configuration and dependencies
- i18n: add translations for CRM export feature
- docker: update postgres to pgvector image for RAG support
- translations: fixed german translation json syntax issue
- nx-server: remove duplicate translation keys from de.json
- translations: update German translations
- nx-drive: remove plan reference comments
- nx-drive: add upload-related translation keys
- update German translations
- nx-server: update translations and app module
- nx-server: update translations and app module
- translations: added missing mobile translations
- nx-user: register UpdateOwnAvatar and UpdateOwnHeader command handlers
Other
- as fallback instead of duplicated contactNumber ([]
- event-driven-arch: standardized NxCommand & NxQuery handlers & implemented bus factor
- ai-assistant: reworked tool naming to dynamic labeling by ai
- event-driven-arch: implemented full event-driven architecture & adapted audit log system + AI Tool handling
- nx-work-manager: add organization validation for cross-user operations
Frontend v1.1.10
New
- nx-auth: implement OTP email verification in onboarding
- nx-auth: add shared NxOtpInputComponent
- nx-crm: add row click navigation in company and contact lists
- nx-asset-manager: add selection clearing and row click navigation
- nx-drive: add standalone video player component with custom controls
- nx-notifications: add notification settings and admin broadcast UI
- nx-invoicing: add time tracking chooser and insert above/below for invoice lines
- nx-core: add Sentry user context for authenticated user tracking
- nx-dashboard: add chart type toggle with line and pie chart views
- nx-feed: enhance feed component with detailed audit log display
- nx-profile: implement DEÜV Personengruppenschlüssel codes
- nx-absence-planner: add absence calculation utils for business logic
- nx-notifications: add push notifications module with NgRx state
Fix
- nx-tags: fix tag dropdown display in task filter
- nx-task-manager: fix employee search in subtasks and contact dialog closing
- nx-ai-assistant: reduce z-index to prevent overlap with modals
- nx-admin-panel: apply centralized employee/license counting to admin panel
- nx-organization: centralize employee/license counting to fix miscounting bugs
- nx-profile: fix notification settings not loading with OnPush change detection
- nx-calendar: fix recurring events not saving and events disappearing
- nx-time-tracking: resolve widget positioning and drag issues on tracker start
- nx-crm, nx-calendar, nx-invoicing: add null safety checks for session data
- nx-crm: prevent infinite notification loop when assigning contacts/companies
- nx-mailing: limit failure reason text length in transaction list
- nx-notifications: fix notification badge cut-off and increase icon size
- nx-time-tracking: use correct translation key for task column header
- nx-profile: refactor vacation settings to use direct API calls
- nx-time-tracking: refactor dashboard widgets to use direct API calls
- nx-client: update @cashwerk packages to CommonJS versions
- nx-client: update @cashwerk packages to CommonJS versions
- nx-client: downgrade node-xlsx to resolve compatibility issues
- nx-ai-assistant: fix approval flow and add pending jobs persistence
Refactor
- nx-auth: implement OTP-based password reset flow
- nx-invoicing, nx-project-manager: update table row selection handlers
- nx-profile: improve password update form with permission-based logic
- nx-shared: update nx-editor content component
- nx-task-manager: update task board template
- nx-crm: update CRM quick forms and portfolio dialog
- nx-dashboard: improve dashboard component structure and styling
- nx-dashboard: integrate month selector into user-info widget with modern UI
- nx-time-tracking: improve global tracker widget with drag, minimize, and animations
- nx-editor: replace PrimeIcons with FontAwesome icons in toolbar
- nx-ai-engine: simplify AI prompt dialog styles to use PrimeNG defaults
- nx-profile: update changeable profile components
- nx-profile: modernize worktime and company tab styling
- nx-time-tracking: rename time-tracking-calculations service to match backend
- nx-work-manager: improve absence planner effects
Docs
- nx-client: update logo URL and remove deprecated tiptap reference
Style
- nx-client: improve UI styling for account verification and AI chat
Notable
- release: 1.1.10 [patch]
- nx-absence-planner: remove unused absence calculations utility
- nx-client: integrate @cashwerk/shared-types and configure GitHub Packages
Backend v1.1.10
New
- nx-mailer: implement OTP email verification system
- nx-drive: add video player control translations
- nx-notifications: add email notification support with template
- nx-notifications: add notification settings entity and API endpoints
- nx-calendar: add push/email notifications for calendar event operations
- translations: add translation keys for time tracking chooser and invoicing
- nx-server: add dashboard translation keys for chart and productivity features
- nx-profile: implement DEÜV Personengruppenschlüssel codes
- nx-notifications: add Expo push notifications with device token management
- nx-auth: add mobile SSO support with deep linking
- nx-ai-engine: migrate from Google AI Studio to Vertex AI
- nx-ai-engine: add parameter metadata and pending jobs persistence
Fix
- nx-feed: fix invoice/offer name display for drafts in audit feed
- nx-crm: fix ManyToMany relationship removal for contacts and companies
- nx-user: log actual email value in audit log instead of boolean
- nx-server: install css-inline musl binary inside Docker container
- nx-server: allow native module scripts in production install
- nx-server: update @cashwerk packages to CommonJS versions
- nx-server: update @cashwerk packages to CommonJS versions
- nx-server: update @cashwerk/shared-types to v1.0.2 (CommonJS)
- nx-server: add .npmrc copy to production stage in Dockerfile
- nx-server: add npmrc creation step to migration job cloudbuild configs
Perf
- nx-time-tracking: optimize tracker start from 15-20s to <1s
Refactor
- nx-server: update variable resolver and remove unused translations
- nx-user: improve password update with permission-based access control
- audit-log: implement unified config-based change detection system
- nx-work-manager: improve absence planner service and controller
- nx-ai-engine: replace prompt-based architecture with Gemini native function calling
Notable
- release: 1.1.10 [patch]
- nx-i18n: add notification settings translations
- nx-server: update translations for German and English
- nx-server: integrate @cashwerk/shared-types and configure GitHub Packages
- nx-server: add filtered logger and minor improvements
- nx-server: upgrade to NestJS 11 and update core dependencies
Frontend v1.1.9
New
- nx-ai-assistant: add entity preview and improve chat UI
Refactor
- nx-invoicing: update listing components layout
- nx-ai-engine: update state management for plan-based backend
Docs
- changelog: update CHANGELOG.md for v1.1.8
Notable
- release: 1.1.9 [patch]
Backend v1.1.9
New
- nx-calendar: add get_calendars AI tool for calendar selection
Fix
- nx-crm: improve search_companies AI tool parameter handling
Refactor
- nx-ai-engine: implement plan-based architecture with modular prompts
Docs
- nx-ai-engine: add architecture plan and refactor documentation
- changelog: update CHANGELOG.md for v1.1.8
Notable
- release: 1.1.9 [patch]
Frontend v1.1.8
Fix
- nx-client: upgrade angular-fontawesome and fix CI workflow for Angular 19
Continuous Integration
- nx-client: add FontAwesome Pro npm authentication to changelog workflow
Notable
- release: 1.1.8 [patch]
- release: 1.1.8 [patch]
- package: updated project meta
Backend v1.1.8
Fix
- nx-licensing: remove obsolete licensePackage relation from license query
Docs
- changelog: update CHANGELOG.md for v1.1.7
Notable
- release: 1.1.8 [patch]
- package: updated project meta
Backend v1.1.7
Breaking Changes
- nx-work-manager: consolidate legacy time-tracking into DDD structure
New
- nx-licensing: add Stripe customer address management for tax calculation
- i18n: add translations for address requirement and product image update
- nx-time-tracking: add task integration for time tracking
- nx-work-reports: add PDF/CSV export endpoints
- nx-work-reports: improve PDF report with accurate calculations and professional design
- nx-shift-planner: enhance timeline data and fix tracking assignment
- nx-shift-planner: enhance timeline data endpoint
- nx-shift-planner: add project relation to shift plans
- nx-absence-planner: add calculate-working-days endpoint with holiday exclusion
- nx-holiday: add holiday controller and improve service with state code normalization
- nx-time-tracking: add German translations for Work Manager module
- nx-time-tracking: add project entity relation with database migration
- nx-invoicing: add translations for preset selector dialog
- nx-invoicing: add asset product images to invoice PDF generation
- nx-invoicing: add asset product images to invoice PDF
- nx-server: add translations for asset group and unit quick creation
- nx-invoicing: add assetId support to invoice lines
- nx-invoicing: add XInvoice validation API and auto-generation
Fix
- entities: rename entity files to follow .entity.ts convention
- circular-deps: replace barrel imports with direct imports
- organization: break circular dependency with licensing module
- licensing: resolve circular dependency in TrialLimitGuard
- licensing: restore NxUserApiModule import to fix entity loading order
- access-control: replace barrel import with direct entity import in roles controller
- licensing: fix circular dependency in NxLicenseValidationService and NxLicenseEnforcementGuard
- licensing: fix circular dependency in NxLicenseValidationService
- licensing: fix circular dependency in NxLicenseValidationService
- licensing: resolve circular dependency in TypeORM entity loading
- nx-organization: improve guard parameter detection for different entities
- nx-task-manager: remove PostgreSQL table inheritance to fix deals appearing in task boards
- nx-work-reports: fix CSV export duration calculation
- nx-work-reports: fix time tracking calculation bugs with clamped date ranges
- nx-shift-planner: add missing translation keys
- nx-user: promote latest worktime after current one is deleted
- nx-invoicing: fix PDF hideItemImages option and XInvoice unit price
- nx-invoicing: atomic number cycle assignment with optimized transaction handling
- nx-invoicing: add missing assetId/productImageUrl to repository methods + debug logs
- nx-invoicing: save assetId and productImageUrl when creating invoice lines
- misc: CRM and shared improvements
- nx-project-manager: fix project duplication and enhance sorting/nextEvent loading
- nx-calendar: fix backend event filtering and recurrence saving
- nx-licensing: centralize tax/discount logic and fix calculation issues
Refactor
- core: restructure auth and config into core folder
- nx-time-tracking: consolidate controllers and fix query handler registration
- nx-work-manager: consolidate legacy time-tracking into DDD structure
- nx-invoicing: improve PDF and XInvoice generation
Notable
- release: 1.1.7 [patch]
- scripts: add circular dependency test script
- release: implement automated changelog and release system
- release: bump version to 1.1.6
- release: implement automated changelog and release system
- nx-server: update German and English translations
- nx-server: add calendar holiday translations
- translations: add missing German translation keys