by Zybroz

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.

Cancel at any time!
Free Trial

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_schedules table — up to 10 named, independently configurable email report schedules (name, frequency, day/DOM, hour, recipients, enabled flag)

  • FEAT: teampulse_schedule_log table — persistent log of every send attempt (schedule name, status, recipient count, error message, timestamp)

  • FEAT: handleScheduler rewritten — actions: list, save, delete, get_log, clear_log, test; admin-role enforced; max-10 guard; auto-migrates legacy email_* config to first schedule on first list call

  • FEAT: tpGetDueSchedules — replaces tpShouldSendEmail; evaluates all enabled schedules against current cron run time; legacy-config fallback if table missing

  • FEAT: Cron — each due schedule fires independently with its own recipients, logs result to teampulse_schedule_log

  • FEAT: EmailReportService::sendForSchedule — schedule-level recipients, subject prefixed with schedule name, no global enabled flag required

  • FEAT: 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 installs

  • React 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 with reports_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 whose reports_to_id matches manager; mirrors getActiveUsers pattern with email enrichment

  • FEAT: saveSettings — admin-only keys enforced server-side; rep access throws Access denied; manager can save general/schedule/support settings only

  • FEAT: /ping response now returns tp_role — React reads this on mount and scopes the entire UI accordingly

  • FEAT: Sidebar NAV groups filtered by roles array — reps see only "My Work" (self-view, actions); managers see all except admin-only items

  • FEAT: Settings tabs filtered by minRole — rep sees none; manager sees General/Schedule/Support; admin sees all tabs

  • FEAT: Router role guard — rep redirected to self-view, manager redirected to dashboard if accessing out-of-scope view

  • React 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 $moduleList

  • FIX: 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 duplicate ScheduleModal; 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 via getSuiteCRMRoot; fixes nav extension files landing in wrong directory when Module Loader CWD ≠ SuiteCRM root

  • React 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 plans

  • CRITICAL FIX: UserDataProvider::getActiveUsers — check users_teams table exists before INNER JOIN; prevents FATAL SQL flood (Table 'users_teams' doesn't exist) on SuiteCRM CE installs without the teams module

  • FIX: 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 + mail fallback; fixes "Failed opening required include/SugarPHPMailer" on LiteSpeed/Hostinger

  • FIX: 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-Archive with .NET ZipFile API in build-plans.ps1; Compress-Archive writes backslash path separators in ZIP entries which PHP ZipArchive::extractTo on Linux treats as literal filename characters (not directory separators) — causing 17% install failure on Hostinger/LiteSpeed with PHP 8.3

  • FIX: Removed pre_install entry 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 enableNavigation in post_install — avoids copy failures for Include/ and Menus/ dirs that don't exist pre-install

  • ZIP entries now use forward slashes — verified compatible with PHP ZipArchive::extractTo on Linux

v0.9.71 — License & Scheduler (2026-04-22)

Released

  • License: Store API validation (GET, validated key), cURL primary + file_get_contents fallback

  • License: saveLicense clears dev_license flag on activation; clear action in handleLicense

  • License 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: runAudit fixed MAX(created_at) query; crmVersion checks suitecrm_version first

v0.8.8 - Root-Cause API Fix (2026-04-13)

Released

  • CRITICAL: Switched API transport from entryPoint=TeamPulseAPI to module=TeamPulse&action=api — no entry point registration required; works immediately after install

  • view.api.php: _displayHeader + _displayFooter overrides suppress HTML chrome from SugarView pipeline; ob_end_clean ensures clean JSON response

  • Entry point registration: Installer now uses append-if-missing strategy (not glob-rebuild); writes to both relative and absolute paths; creates cache/teampulse_install.txt diagnostic

  • Demo 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-dependent realpath('.') — fixes log location on Windows WAMP

  • Debug 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 string

  • opcache_reset after Module Loader install; no-cache HTTP headers on DetailView

  • Iterative 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_actions table, 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)

Saving Comment Saving Comment...