v0.9.1 Latest 2026-03-26
Fixed
  • Sub-controller container injection causing 500 errors on deal routes — replaced container->get() calls with reflection-based constructor injection
  • Null guard missing on getDateModified() in stale deals dashboard widget — prevented crash when date is unset
  • Null guard missing on getDueAt() in deal view task list — prevented crash when task has no due date
  • ViewModel DI exclusion for Mautic 5/6 (Symfony 5.x does not support exclude on tagged service registrations)
  • Table name prefix in E2E seed queries — corrected to mautic_dealflow_* prefix
  • CI upgrade workflow: v0.8.0 compat patch now uses setMethodCalls() instead of setArguments()
Improved
  • Test suite expanded to 1,693 tests (1,683 unit + 10 integration), 3,929 assertions — mutation score index raised toward 65%
  • Multi-version CI pipeline — gate, integration, E2E, and upgrade workflows covering Mautic 5, 6, and 7
  • Pipeline and stage listing API endpoints added for n8n integration
  • CI now uses full Mautic checkout for gate workflow (replaces stale core-lib approach)
v0.9.0 Stable 2026-03-25
Added
  • Mautic 7 compatibility — all controllers registered as services, forward() pattern for sub-controller delegation
  • Compat layer: MauticVersionAdapter and Twig extension for cross-version rendering differences (Mautic 5/6/7)
  • Deprecation subscriber — instruments legacy routes with structured logging for future removal
  • UI layer decomposition: ViewModels, extracted JavaScript assets, and reusable template partials
  • CLI update command — replaces web-request file operations for safer plugin self-updates
  • Integration tests for DBAL table name resolution in DealRepository and DealAuditEventRepository
  • Domain rebrand: all internal references updated from mauticdealflow.com to dealflowplugin.com
Fixed
  • API controller crash caused by container->get()serializeDeal() now accepts DealFieldManager as a parameter
  • Deal title blank TypeError — setTitle() signature made nullable (?string)
  • Add note CSRF: controller now reads mauticAjaxCsrf header and handles XHR branch correctly
  • Deal note errors: proper error feedback, HTML rendering of note body, edit button wiring
  • Stage move via kanban now uses AJAX fetch instead of full-page form POST
  • Circular reference: removed duplicate GlobalSearch service registration
  • Mautic 5/6 compatibility shim for indexButton block alongside preHeader
Improved
  • DealRepository refactoring: shared query filters, grouped aggregates, set-based SQL for batch operations
  • DealManager single-flush refactor — eliminated double-flush pattern to prevent race conditions
  • Webhook curl test suite for inbound webhook sources
  • README and composer.json updated for multi-version support and brand compliance
v0.8.8 Stable 2026-03-25
Added
  • Pipeline Velocity Calculator — new service computing average days per stage, conversion rates by stage type, and deal throughput over configurable time windows
  • Stage count display on kanban board now shows deal count and total amount per stage
  • Responsive styles for all Deal Flow views — tested at 375px, 768px, and 1440px viewports
Fixed
  • Deal status not syncing when moved to won/lost stages — moveToStage() now writes status alongside stage_id in the same DBAL update
  • DealField form: Chosen.js dropdown show/hide broken when switching field type — replaced vanilla addEventListener with Mautic®'s mQuery event binding
  • DealField form: empty submit caused a 500 — added client-side and server-side validation
  • WYSIWYG editors: migrated note fields from CKEditor 4 to Mautic 7's CKEditor 5 API
  • Pre-existing test failures in 4 categories resolved (36 tests)
Improved
  • Removed global subnav includes from all Deal Flow views — navigation is now context-appropriate per page
  • Kanban board: white board background, debounced search, cleaner stage empty states
v0.8.7 Stable 2026-02-28
Added
  • License system with per-subdomain key enforcement
  • Auto-update check — Deal Flow checks for new versions and prompts in the Mautic admin
  • Integration tests for critical database operations (Doctrine lifecycle, flush/persist)
  • Mutation testing infrastructure (Infection PHP) — 61% MSI baseline
Fixed
  • CSRF token validation on kanban stage move
  • API stage move returning 500 on certain pipeline configurations
  • Plugin overlay showing incorrect status during activation
v0.8.6 / v0.8.5 Stable 2026-02-10
Added
  • Deal view complete redesign — 10-item overhaul including task CRUD, inline field editing, contact operations, and activity timeline
  • Buying Committee table with role assignment per contact
  • Dashboard widgets with AJAX config popovers
  • "Create deal" campaign action (Mautic campaign builder integration)
Fixed
  • Task delete not working from deal view
  • Status validation on deal form allowing invalid state transitions
  • Company typeahead not returning results in deal form
  • persist() missing before flush() in updateField() under DEFERRED_EXPLICIT policy
v0.8.4 / v0.8.3 Stable 2026-01-20
Added
  • FormEntity migration for Deal, Pipeline, DealStage — enables campaign conditions and segment filters
  • DealModel service layer (replaces direct DealManager calls in campaign context)
  • Docker-based test infrastructure with PHP 8.3
  • Contact timeline injection in deal view
  • Global search integration
Fixed
  • isChanged() called with snake_case property names — migrated all calls to camelCase
  • isChanged() called on DateTimeImmutable and relationship setters — removed invalid calls
  • Service wiring bugs found during E2E testing
v0.8.2 / v0.8.1 Stable 2025-12-15
Added
  • Revenue Execution Workspace — 6 new features including pipeline reports and task queue
  • Inbound webhooks with per-source HMAC signing
  • Outbound events via Mautic's native webhook system
  • Email personalization tokens: {dealflow_title}, {dealflow_amount}, {dealflow_stage}
Fixed
  • Relationship FK writes silently dropped by Doctrine — switched to DBAL direct writes with $em->clear()
  • Widget config updates failing on concurrent saves
  • Note body XSS — bodies now sanitized on save
v0.8.0 Initial Release 2025-11-01
Added
  • Kanban pipeline board with drag-and-drop stage moves
  • Deal CRUD — create, edit, view, delete with full field set
  • Multiple pipelines with configurable stages (open, won, lost types)
  • Deal notes with rich text editor
  • Deal tasks with due dates and assignees
  • Contact association — link Mautic contacts to deals
  • Custom deal fields (text, select, date, number types)
  • Pipeline reports with won/lost metrics and velocity
  • Task queue view across all deals
  • Permission system (view own, view other, edit, delete per entity)
  • Deal attachments with download links
  • Audit log — every deal change tracked with user and timestamp