TeamPulse for SuiteCRM is an AI-powered behavioral intelligence extension that transforms CRM activity into actionable coaching signals, discipline scoring, and momentum insights. TeamPulse helps you detect sales execution gaps before they impact revenue. It turns everyday CRM activity into clear coaching signals, discipline scores, and early performance insights — so managers can act before pipeline problems appear.
Release Notes
Roadmap & Changelog
TeamPulse evolves rapidly. This page tracks our feature history and future vision.
Changelog
v0.9.9 — Multi-Schedule + Delivery Log (2026-04-26)
Released
FEAT:
teampulse_schedulestable — up to 10 named, independently configurable email report schedules (name, frequency, day/DOM, hour, recipients, enabled flag)FEAT:
teampulse_schedule_logtable — persistent log of every send attempt (schedule name, status, recipient count, error message, timestamp)FEAT:
handleSchedulerrewritten — actions:list,save,delete,get_log,clear_log,test; admin-role enforced; max-10 guard; auto-migrates legacyemail_*config to first schedule on firstlistcallFEAT:
tpGetDueSchedules— replacestpShouldSendEmail; evaluates all enabled schedules against current cron run time; legacy-config fallback if table missingFEAT: Cron — each due schedule fires independently with its own recipients, logs result to
teampulse_schedule_logFEAT:
EmailReportService::sendForSchedule— schedule-level recipients, subject prefixed with schedule name, no global enabled flag requiredFEAT: Schedule tab UI — card list per schedule, Add/Edit inline form, delete, per-schedule test send
FEAT: Delivery Log panel — paginated table (50/page), Download CSV, Clear Log; auto-refreshes after test send
Both tables auto-created in
ensureTables— zero-downtime upgrade for existing installsReact rebuilt with v0.9.9 version string
v0.9.80 — RBAC: Role-Scoped Data & UI (2026-04-25)
Released
FEAT: Three-tier role system — Admin / Manager / Rep — enforced server-side and in React UI
FEAT:
TeamPulseApi::detectRole— detects role from$current_user->is_admin+ SQL check for direct reports (manager = has at least one user withreports_to_id = current_user.id)FEAT:
TeamPulseApi::resolveMembers— all data ops scoped: admin → full team list, manager → direct reports only (getDirectReports), rep → empty (no team-wide data)FEAT:
UserDataProvider::getDirectReports(managerId)— returns active non-admin users whosereports_to_idmatches manager; mirrorsgetActiveUserspattern with email enrichmentFEAT:
saveSettings— admin-only keys enforced server-side; rep access throwsAccess denied; manager can save general/schedule/support settings onlyFEAT:
/pingresponse now returnstp_role— React reads this on mount and scopes the entire UI accordinglyFEAT: Sidebar NAV groups filtered by
rolesarray — reps see only "My Work" (self-view, actions); managers see all except admin-only itemsFEAT: Settings tabs filtered by
minRole— rep sees none; manager sees General/Schedule/Support; admin sees all tabsFEAT: Router role guard — rep redirected to
self-view, manager redirected todashboardif accessing out-of-scope viewReact rebuilt with v0.9.80 version string
v0.9.75 — Nav Registration Fix (2026-04-25)
Released
FIX:
en_us.lang.ext.php— TeamPulse label was missing from compiled application language; nav bar couldn't render the tab even though module was in$moduleListFIX: Language extension source now uses
if (isset($sugar_version) && strpos($sugar_version, '8.') !== 0)guard — safe for future SuiteCRM 8.x (which uses Module Federation, not$app_list_strings)config_override.php—$sugar_config['moduleList'][] = 'TeamPulse'moved outside CONFIGURATOR block (CONFIGURATOR strips everything between its markers on save)
v0.9.74 — Export Dedup + Nav Absolute Path Fix (2026-04-25)
Released
FIX:
ExportView.jsx— removed duplicateScheduleModal; replaced "Schedule Report" button with info note pointing to Settings → Schedule tab. Single source of truth for schedule configuration.FIX:
TeamPulseInstaller::enableNavigation+disableNavigation— switched from CWD-relative paths to absolute paths viagetSuiteCRMRoot; fixes nav extension files landing in wrong directory when Module Loader CWD ≠ SuiteCRM rootReact rebuilt with v0.9.74 version string
v0.9.73 — Pre-Submission Bug Fixes (2026-04-23)
Released
CRITICAL FIX:
LicenseService::validateViaStore— removed early-return on single plan rejection; now tries all 3 plan public keys before concluding key is invalid. Fixes "unlicensed" shown after every page reload for onetime/yearly plansCRITICAL FIX:
UserDataProvider::getActiveUsers— checkusers_teamstable exists before INNER JOIN; prevents FATAL SQL flood (Table 'users_teams' doesn't exist) on SuiteCRM CE installs without the teams moduleFIX: License check error handler changed to fail-closed (demo mode stays locked until license confirmed); was fail-open which briefly allowed live mode on first load if API was momentarily unreachable
FIX: Support email — use absolute path for SugarPHPMailer +
mailfallback; fixes "Failed opening required include/SugarPHPMailer" on LiteSpeed/HostingerFIX: Schedule tab picklist height set to 45px; options were partially cut off on some OS themes
React rebuilt with v0.9.73 version string
v0.9.72 — Module Loader Install Fix (2026-04-23)
Released
CRITICAL FIX: Replaced PowerShell
Compress-Archivewith .NETZipFileAPI inbuild-plans.ps1;Compress-Archivewrites backslash path separators in ZIP entries which PHPZipArchive::extractToon Linux treats as literal filename characters (not directory separators) — causing 17% install failure on Hostinger/LiteSpeed with PHP 8.3FIX: Removed
pre_installentry from manifest (was referencing a missing file, caused Module Loader to abort silently on some hosts)FIX: Navigation registration moved from manifest copy entries to
enableNavigationin post_install — avoids copy failures forInclude/andMenus/dirs that don't exist pre-installZIP entries now use forward slashes — verified compatible with PHP
ZipArchive::extractToon Linux
v0.9.71 — License & Scheduler (2026-04-22)
Released
License: Store API validation (GET,
validatedkey), cURL primary +file_get_contentsfallbackLicense:
saveLicenseclearsdev_licenseflag on activation;clearaction inhandleLicenseLicense UI: auto-reload after activate/clear; "Clear Key & Cache" button
Scheduler: save/test/status actions; email report cron integration
Settings: 5-star review block, support links, schedule tab
Debug log:
runAuditfixedMAX(created_at)query;crmVersioncheckssuitecrm_versionfirst
v0.8.8 - Root-Cause API Fix (2026-04-13)
Released
CRITICAL: Switched API transport from
entryPoint=TeamPulseAPItomodule=TeamPulse&action=api— no entry point registration required; works immediately after installview.api.php:
_displayHeader+_displayFooteroverrides suppress HTML chrome from SugarView pipeline;ob_end_cleanensures clean JSON responseEntry point registration: Installer now uses append-if-missing strategy (not glob-rebuild); writes to both relative and absolute paths; creates
cache/teampulse_install.txtdiagnosticDemo mode: Loads 3 inline mock reps (Alice, Bob, Carol) with scores, activities, and signals — no longer shows empty state
DebugLogService: Log path derived from
__FILE__instead of CWD-dependentrealpath('.')— fixes log location on Windows WAMPDebug toggle: Now shows error message in log area if API call fails (was silently swallowed)
v0.8.3–v0.8.7 - Infrastructure Hardening (2026-04-12)
Released
Stable Vite asset filenames (no content hashes),
?v=cache-busting query stringopcache_resetafter Module Loader install; no-cache HTTP headers on DetailViewIterative entry point registration fixes (CWD-relative, absolute paths, glob rebuild)
Note: v0.8.4–v0.8.7 were failed attempts at the same entry point issue — resolved in v0.8.8
v0.8.2 - Journal AI Assist (2026-04-12)
Released
Import from Signals modal → batch-create pre-filled journal entries
AI Draft button (BYOK) — coaching note from LLM
Template button — structured coaching brief from InsightEngine (no AI key needed)
v0.8.1 - Actions & Communication (2026-04-12)
Released
Signal action bar — Alert / Kudos / Note to reps (admin/manager only)
Actions history view with acknowledge flow for reps
teampulse_actionstable,ActionService.php
v0.8.0 - Dashboard Dashlets (2026-04-12)
Released
Configurable dashlet grid (8 mini-cards), DashletConfigPanel
PageInsight accordion on CoachingSignals, Recommendations, Journal
ActionsRequired panel in AISummary
v0.7.x - Phase 5 Hardening (2026-03–04)
v0.7.6: Fix uninstall, debug log routing, Store API license
v0.7.5: License framework — offline HMAC-SHA256, 30-day trial
v0.7.4: Onboarding wizard, SuiteCRM 8.x compat, Gemini BYOK, InsightEngine
v0.7.3: PHP hardening (SugarQuery, PDO prepared statements)
v0.7.0–v0.7.2: Navigation, debug API, support tab, UI polish
Changelog (v1.x — Internal Reference)
These entries document the product's development history before the SuiteCRM port began.
v1.4.0 — Strategic Mastery
- Manager's Coaching Journal, 8-week Activity Trend Chart, Sidebar navigation redesign.
v1.3.0 — Admin & Export
- Scoring Rules Editor, CRM Configuration UI, Executive Report PDF view, Action Inbox redesign.
v1.2.0 — Intelligence & Forecasting
- AI Summary View, Behavioral Risk Forecast, Recommendations Engine.
v1.1.0 — Operational Behavioral Suite
- Momentum Tracker, Coaching Signals, Deal Hygiene Monitor, Correlation Analysis, Leaderboard.
v1.0.0 — Core Foundation (MVP)
- Discipline Scoring (0–100), Team Dashboard, Member Drill view, React + Vite infrastructure.
Roadmap
v0.9.10 — Support & Debug Enhancements (planned)
Support email: attach structured technical details (SuiteCRM version, PHP, logs) as inline section
Support email: sender receives direct reply copy (Reply-To header so replies land in their inbox)
Debug log: capture PHP-level ERROR/WARNING entries in TeamPulse debug log (not just server error_log)