v5.22.0 (cumulative since v3.4.0)

New Features

  • PostgreSQL Multi-Database Support: Complete PostgreSQL implementation with SQL dialect abstraction layer, data provider, CodeGen database provider, PlatformSQL for cross-platform RunView/RunQuery@memberjunction/sqlglot-ts transpiler, @memberjunction/sql-converter with 12 TSQL→Postgres conversion rules (461 unit tests, 86% real-PG pass rate), and CLI commands mj translate-sqlmj sql-convert, and mj sql-audit
  • Integration Engine: Full enterprise integration platform with orchestrator, field mapping engine, match engine, and connector architecture — ships with HubSpot, Salesforce, YourMembership, Rasa.io, and FileFeed connectors, Angular UI (Control Tower, Connection Studio, Mapping Workspace), sync scheduling, monitoring dashboard, run history with error drill-down, completion notifications, and a generic connector-driven action generation framework that replaced 18 legacy per-action executors
  • MCP OAuth 2.1 with Dynamic Client Registration: Complete OAuth 2.1 authorization server with dynamic client registration, hierarchical scope-based access control, proxy-signed JWTs, GraphQL OAuth operations, redirect flow, events, and subscriptions
  • Version History System: Full tagging/versioning system with database migration, @memberjunction/version-history package, dashboard with resizable detail panel, inline micro-view, two-layer dependency walker, and GraphQL label creation
  • Slack/Teams AI Agent Integration: Complete messaging integration with Server Extensions plugin framework, per-agent identity, smart routing, Block Kit formatting for Slack, Adaptive Cards for Teams, interactive messages, modal forms, slash commands, deep MJ Explorer links, and notification rendering (301 tests)
  • Runtime Schema Update (RSU) System: Full pipeline with @memberjunction/schema-engineRuntimeSchemaManager, git integration (branch, commit, push, PR), PM2 health polling, GraphQL API, DB mutex, and audit logging
  • Row Level Security: Enforced RLS on Load, Save, and Delete operations with generic error messages to prevent information leakage, abstract CheckRecordRLS/CheckCreateRLS methods, and proper boolean-to-SQL BIT conversion
  • Open App System: Complete provider-agnostic Open App manifest specification with Skyway migration engine, DDL/DML support, schema placeholders, dynamic package loading (server-side DynamicLoader + client-side generated imports), and full OpenApp Engine supporting pnpm/npm/yarn with configurable project layouts
  • Query Builder Agent: AI-powered query builder with sub-agent architecture, QueryEngine, AG Grid data artifacts with live SQL execution, ad-hoc query infrastructure, and full Query Composition Engine with comment-aware SQL parsing and cross-platform pipeline
  • Query Browser UI: Create/edit query drawers, mj-code-editor, hover tooltips, dependent query visualization, and composable query support
  • Computer Use Engine: Playwright-based browser automation engine with Test Run Output entities, CodeGen integration, and lazy-loading to prevent startup crashes
  • Vector Duplicate Detection Modernization: Overhauled vector-based duplicate detection with shared text processing utilities, worker thread fixes, autotagging modernization, Angular dashboards, Docker workbench testing, and Playwright full-stack E2E validation
  • Knowledge Hub: Comprehensive implementation plan with mockups, team briefing, and architectural design
  • AI-Powered Entity Document Suggestion: LLM-powered entity document suggestion with slide-in panel UI and model priority updates
  • Agent Scratchpad System: Private working memory for loop agents enabling internal state across iterations without exposing to conversation
  • Comprehensive Unit Testing Framework: Vitest across the monorepo — 171 packages tested, 1,756+ passing tests, ~25K lines of test code with Docker Compose CI/CD integration
  • Flow Editor Overhaul: Replaced legacy flow editor with generic Foblex-based package with visual polish and accessibility fixes
  • Z.AI GLM Model Support: New @memberjunction/ai-zhipu package for Z.AI GLM-5 models
  • DBAutoDoc Research Paper: Full research paper with PK/FK detection algorithm improvements, LLM-as-filter architecture, multi-model support, deterministic FK gates, statistical confidence floors, and VLDB Journal submission
  • Home Dashboard: New home dashboard UI component

Improvements

  • Unified Design Token System: Comprehensive theming/styling system with semantic CSS custom properties and dark mode support — migrated 30+ component packages from hardcoded Kendo values to semantic MJ design tokens including Actions, AI dashboards, MCP, charts, Data Explorer, conversations, artifacts, agent forms, Version History, Component Studio, and more
  • Performance Optimization Suite: Request coalescing reducing GraphQL round-trips 44% and query time 76%; FastStartupMode trusting IndexedDB cache on warm loads; stale-while-revalidate metadata; RunViews request deduplication with linger window; lazy EntityFieldValueInfo with O(1) entity lookup Maps; batch dataset status checks (3 round-trips → 1); LRU eviction for detached components
  • Bundle Optimization: Split DashboardsModule into 11 lazy-loaded feature modules, created ng-bootstrap-lite, dynamic imports for dhtmlx-gantt (601 KB savings) and exceljs (934 KB savings), auto-generated lazy-feature-config from @RegisterClass metadata, and lazy loading fallback at all ClassFactory sites
  • CLI Lazy Bootstrap: Lazy-load MJ bootstrap for light CLI commands — startup from 9.6s to 0.14s (68x improvement)
  • BaseSingleton Migration: Migrated 14+ singleton classes and 4 Angular services to BaseSingleton and global object store patterns; converted QueryEngineServer, QueryCacheManager, and AutotagBaseEngine
  • Auth Provider Extraction: Extracted auth providers into standalone package, updated MSAL for v5.x and Okta for v7.x compatibility, fixed MJGlobal circular dependency
  • Encryption Security Hardening: Moved encryption to GenericDatabaseProvider, added ValidateKeyAccessibility() to all providers, parallelized ValidateAllKeys(), buffer zeroing, error sanitization, and input validation
  • CodeGen Idempotency: Root cause analysis and multi-bug fix achieving full idempotency — virtual fields no longer dropped, display names no longer flip-flop, field categories no longer regenerated unnecessarily; orphaned Angular directory cleanup; excludeSchemas filter applied to all generators
  • Entity Name Normalization (v5.0 Breaking): All entity names use MJ: prefix to prevent cross-schema collisions with ClassName prefix collision fix, entity name scanner tools, and updated Angular CodeGen
  • Server Middleware Refactor: Replaced HookRegistry + DynamicPackageLoader with @RegisterClass + ClassFactory middleware pattern with GetResolverPaths() on BaseServerMiddleware
  • External Change Detection Hardening: Enterprise hardening with multi-platform support, batching, transaction race condition fix for concurrent replay, and boolean casting fix
  • Chat UI Overhaul: Pinned messages panel with jump-to navigation, message deletion with batch TransactionGroup saves, instant rating UI with thumbs on all AI messages, cross-conversation bleed-over guards, and streaming message registration
  • Artifact Feedback Redesign: Plugin-level architecture with header button, half-star ratings, inspect icon, and markdown descriptions
  • AI Prompt Optimization: Loop agent system prompt using 60% fewer type tokens; assistant prefill and stop sequences on 27 prompts; compact markdown for action/sub-agent details; enhanced SQL query param extraction with Nunjucks conditional guard detection
  • AI Directive Interface: Replaced newline heuristic with explicit structured AIDirective property for cleaner action result communication
  • Manifest Generation: Dependency reconciliation via syncDependencies, dist/ fallback with AST parsing for npm packages without src/, and efficiency improvements (only emit on changes, removed timestamps)
  • PostgreSQL Migration Toolchain/pg-migrate slash command, v5.5–v5.10 migration conversions, and deterministic baseline scripts via sqlglot
  • Comprehensive Package Documentation: Automated README generation across the entire monorepo with three-tier model docs, branch TOC READMEs, and root packages directory
  • Record Changes Timeline: Redesigned panel with clean timeline UX for audit trail visualization
  • AI Prompt Runs UI: Redesigned header with card-based layout and full-screen viewers
  • Salesforce REST Connector: Production-ready bidirectional sync connector
  • CompanyIntegration Stored Procs: Updated Create and Update stored procedures with scheduling, locking, and config columns
  • Migration Tooling: Version ordering validation with auto-discover directories, configurable timeout, and deployment documentation
  • Gemini 3 Flash Promotion: Top priority for all CodeGen AI prompts
  • AI Models Cleanup: Marked 25 deprecated AI model-vendor inference pairs as Inactive; added missing primaryKey fields and reconciled metadata
  • Conversation Caching: Skip loading spinner when switching to cached conversations
  • Data Explorer: Improved filter stability, rebuilt Single Search Result, fixed redundant RunView calls, stale field/sort leaks, added server-side sort for default views
  • Test Harness: Migrated component linter tests to Vitest; skip required-queries-not-called for child-delegated queries
  • Component Spec Caching: Cache resolved component spec to survive render errors
  • DisplayNameOrName: Replaced hardcoded entity names in Data Explorer for flexibility
  • MJExplorer Cleanup: Removed demos (moved to separate repo), removed tab-strip/container-directives

Bug Fixes

  • Agent OOM Crash: Prevented infinite retry loop and out-of-memory crash when API credentials are missing
  • JWT Expiry: Force re-authentication on irrecoverable JWT expiry mid-session
  • MSAL Token Refresh: Force network round-trip instead of returning cached expired tokens
  • Transaction Race Condition: Resolved critical race condition in ExternalChangeDetection concurrent replay
  • NVARCHAR Truncation: Added N prefix to Flyway-escaped string continuations in SqlLogger preventing data truncation in long strings
  • Nunjucks Template Parsing: Fixed critical failure where missing whitespace between {% raw %} and next token caused parser to fail
  • Loop Agent Retry: Fixed LoopAgentType to properly handle 'Retry' nextStep type for message expansion
  • Template Rendering: Fixed GenerateTemplateTexts rendering bug with E2E validation
  • Inline Template Expressions: Fixed support for forEach/while loop parameters with inline template expressions
  • Stop Sequence Parsing: Preserved newlines when parsing comma-delimited stop sequence lists
  • Angular 21 Change Detection: Fixed zone.js 0.15 regressions in conversations, blank tabs after async component spec loading, and agent responses not appearing without refresh
  • SQL Validation Regex: Fixed regex that incorrectly blocked legitimate string values containing SQL keywords
  • SQL Azure Datetimeoffset: Fixed addColumnSQL DEFAULT backfill error on SQL Azure
  • Form Field Autocomplete: Handle entities without NameField by falling back to ID field
  • Required Field Validation: Fixed validation for falsy values (0, false, empty string) incorrectly treated as missing
  • MetadataSync Validation: Pass contextUser to GetEntityObject and skip auto-calculated Path field
  • Null ViewEntityInfo: Fixed null value when saving user views via GraphQL mutation
  • EntityFieldValue Sequences: Fixed non-idempotent sequence updates in CodeGen
  • Single-Record Query: Return null instead of empty object when no rows found
  • CreatedAt Date Handling: Wrapped __mj_CreatedAt in new Date() to handle string values from DB
  • View Creation: Fixed view creation from data grid and config panel flow
  • Loading Screen Recovery: Added reset for stuck loading states preventing UI lockout
  • Cross-Conversation Bleed-Over: Guarded onMessageSent/onAgentResponse against cross-conversation state contamination
  • Pin Message Bugs: Fixed timestamp corruption, nav-away state loss, and UI not updating immediately
  • UUID Comparison: Replaced direct === with UUIDsEqual() for reliable matching
  • Artifact Pane Width: Fixed reset when closing or switching conversations
  • Artifact Collection UI: Fixed update after removing artifact from collection
  • MCP Duplicate Tools: Prevented duplicate tool registration crash during session initialization
  • AG Grid Empty State: Suppressed duplicate overlay in query data grid
  • Form Field Link Text: Fixed link text appearing larger than regular values
  • ESM Compatibility: Added .js extensions to barrel re-exports for Node.js 22+; fixed bare directory import for @microsoft/microsoft-graph-client
  • Filter Builder Clipping: Fixed dropdown clipping with fixed positioning and transform-aware offset
  • JSDoc Comment Escape: Fixed CodeGen escaping of JSDoc-breaking sequences in description output
  • CodeGen SchemaInfo Prefix: Fixed not honoring EntityNamePrefix for new entities
  • ClassFactory Registration: Fixed auto-root registration breaking CreateInstance lookups
  • ESM React Compatibility: Fixed after MJ 4.0 upgrade
  • DELETE Cascade for Nullable FKs: Fixed behavior in composite unique constraints
  • DeleteOptionsInput Schema: Added missing fields to GraphQL type
  • Slash Command Regex: Resolved parse errors in 4 slash command frontmatters
  • Demo Entity Export: Prevented invalid export and fixed manifest import extension
  • Express Type Compatibility: Fixed between MJServer and extension packages
  • Docker Build: Added build-essential to MJAPI Dockerfile for isolated-vm native compilation
  • DuplicateRun Status: Use 'Failed' instead of 'Error' for ProcessingStatus
  • Entity Form Scrollbars: Fixed scroll overflow on custom entity forms
  • List Entity Search: Fixed dropdown rendering issues
  • App Switcher Overflow: Fixed dropdown overflow clipping
  • Mermaid Dark Mode: Auto-detect dark mode for diagram rendering
  • RecordChange Index: Removed migration that would significantly increase database size and cause timeouts
  • Messaging Extensions: Set as disabled by default with better error logging
  • Boolean Casting: Fixed in ExternalChangeDetection
  • ChildPromptID: Fixed population on prompt run records
  • SQLConverter InsertRule: Fixed incorrect quoting of __mj_ inside string literals
  • CodeGen Determinism: Regenerated forms with deterministic relationship sort
  • Demo Install Script: Fixed .env parsing in AssociationDB install script