v5.22.0 (cumulative since v3.4.0)
14 days ago by Caeleb Balanesi
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-tstranspiler,@memberjunction/sql-converterwith 12 TSQL→Postgres conversion rules (461 unit tests, 86% real-PG pass rate), and CLI commandsmj translate-sql,mj sql-convert, andmj 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-historypackage, 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-engine,RuntimeSchemaManager, 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/CheckCreateRLSmethods, 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-zhipupackage 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
@RegisterClassmetadata, 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
BaseSingletonand 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, parallelizedValidateAllKeys(), 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+DynamicPackageLoaderwith@RegisterClass+ ClassFactory middleware pattern withGetResolverPaths()onBaseServerMiddleware - 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
AIDirectiveproperty 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-migrateslash 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
Nprefix 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
LoopAgentTypeto properly handle 'Retry' nextStep type for message expansion - Template Rendering: Fixed
GenerateTemplateTextsrendering 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
addColumnSQLDEFAULT backfill error on SQL Azure - Form Field Autocomplete: Handle entities without
NameFieldby falling back to ID field - Required Field Validation: Fixed validation for falsy values (0, false, empty string) incorrectly treated as missing
- MetadataSync Validation: Pass
contextUsertoGetEntityObjectand 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_CreatedAtinnew 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/onAgentResponseagainst cross-conversation state contamination - Pin Message Bugs: Fixed timestamp corruption, nav-away state loss, and UI not updating immediately
- UUID Comparison: Replaced direct
===withUUIDsEqual()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
.jsextensions 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
EntityNamePrefixfor new entities - ClassFactory Registration: Fixed auto-root registration breaking
CreateInstancelookups - 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-essentialto MJAPI Dockerfile forisolated-vmnative 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
.envparsing in AssociationDB install script