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
excludeon 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 ofsetArguments()
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:
MauticVersionAdapterand 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
DealRepositoryandDealAuditEventRepository - Domain rebrand: all internal references updated from
mauticdealflow.comtodealflowplugin.com
Fixed
- API controller crash caused by
container->get()—serializeDeal()now acceptsDealFieldManageras a parameter - Deal title blank TypeError —
setTitle()signature made nullable (?string) - Add note CSRF: controller now reads
mauticAjaxCsrfheader 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
indexButtonblock alongsidepreHeader
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.jsonupdated 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
addEventListenerwith Mautic®'smQueryevent 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 beforeflush()inupdateField()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 camelCaseisChanged()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