Changelog
All notable changes to MBC CQRS Serverless are documented here. This project follows Semantic Versioning and Conventional Commits.
Version Scheme
x.y.z- Production releasesx.y.z-beta.n- Beta releases for testingx.y.z-alpha.n- Alpha releases for early access
Stable Releases (1.x)
1.0.26 (2026-01-26)
Features
- cli: Add configurable local service ports via environment variables (See Details) (PR #300)
- Support for
LOCAL_HTTP_PORT,LOCAL_DYNAMODB_PORT,LOCAL_RDS_PORT, and other port variables - Allows users to resolve port conflicts with other services
- Configuration is automatically applied to Docker Compose, Serverless Offline, and trigger scripts
- Support for
Security
- Update
diffpackage from 4.0.2 to 4.0.4 for security fix (PR #297, PR #299) - Update
lodashpackage from 4.17.21 to 4.17.23 for prototype pollution fix (PR #298)
1.0.25 (2026-01-19)
Features
- core: Enhanced inline template email with advanced variable substitution (See Details)
- Support for nested property access (e.g.,
{{user.profile.name}}) - Support for Unicode/Japanese keys in template variables
- Whitespace trimming inside placeholders (e.g.,
{{ name }}equals{{name}}) - Improved local development fallback for template compilation
- Support for nested property access (e.g.,
1.0.24 (2026-01-17)
Features
- mcp-server: Add Claude Code Skills for guided development assistance (See Details)
/mbc-generate: Generate boilerplate code (modules, services, controllers, DTOs, handlers)/mbc-review: Review code for best practices and anti-patterns (20 patterns)/mbc-migrate: Guide version migrations and breaking changes/mbc-debug: Debug and troubleshoot common issues- Skills are distributed via npm package and can be installed to
~/.claude/skills/or.claude/skills/
- cli: Add
mbc install-skillscommand for easy skills installation (See Details)- Install skills to personal directory (
~/.claude/skills/) or project directory (.claude/skills/) - Options:
--project,--force,--list
- Install skills to personal directory (
Bug Fixes
- core: Fix typo in parameter name
skExpessiontoskExpression- Affected packages: core, directory, master, task, ui-setting
- This was a breaking change for TypeScript users who referenced the old parameter name
1.0.23 (2026-01-16)
Features
- core: Add inline template email support with
sendInlineTemplateEmail()method (See Details)- New
sendInlineTemplateEmail(msg: TemplatedEmailNotification)method in EmailService - Support for inline HTML/text templates with dynamic data substitution
- Local development fallback with manual template compilation when SES is unavailable
- New interfaces:
InlineTemplateContent,TemplatedEmailNotification
- New
1.0.22 (2026-01-16)
Features
- mcp-server: Add code analysis tools for AI-assisted development (See Details)
mbc_check_anti_patterns: Detect common anti-patterns in code with severity levelsmbc_health_check: Project health check (dependencies, structure, configuration)mbc_explain_code: Analyze and explain code in MBC CQRS context
Bug Fixes
- mcp-server: Improve code analysis tools robustness
- Renumber anti-patterns sequentially (AP001-AP010)
- Limit regex match range to prevent false positives
- Add error handling for file reading and JSON parsing
- Add 18 unit tests for analyze tools
Security
- Fix security vulnerabilities in dependencies: qs, express, body-parser
Dependencies
- Bump qs from 6.13.0 to 6.14.1
- Bump @nestjs/platform-express from 10.4.20 to 10.4.22
- Bump express from 4.21.2 to 4.22.1
- Bump body-parser from 1.20.3 to 1.20.4
1.0.21 (2026-01-15)
Features
- import: Add ZIP finalization hooks support to ImportModule
- New
IZipFinalizationHookinterface for custom post-import processing - Register hooks via
zipFinalizationHooksoption inImportModule.register() - Hooks receive
ZipFinalizationContextwith results, status, and execution input
- New
1.0.20 (2026-01-11)
Bug Fixes
- import: Fix Step Functions CSV handler always setting COMPLETED status regardless of child job failures
- Fixed
CsvImportSfnEventHandler.finalizeParentJob()to correctly set status to FAILED when any child job fails - Fixed
CsvImportSfnEventHandlerincsv_loaderstate to correctly set status when early finalization occurs with failures - Previously, the ternary operator was incorrectly returning COMPLETED for both cases:
failedRows > 0 ? COMPLETED : COMPLETED - Now correctly returns FAILED when failedRows > 0:
failedRows > 0 ? FAILED : COMPLETED - This bug caused Step Functions to report SUCCESS even when child import jobs failed
- See CsvImportSfnEventHandler for details
- Fixed
1.0.19 (2026-01-11)
Bug Fixes
- import: Fix master job status not updating to FAILED when child import jobs fail
- Previously, when a child import job failed with errors like
ConditionalCheckFailedException, the master job status remainedPROCESSINGindefinitely - Fixed
incrementParentJobCountersto correctly set master job status toFAILEDwhen any child job fails (was always setting toCOMPLETED) - Fixed
ImportQueueEventHandler.handleImportto callincrementParentJobCounterson error, ensuring parent counters are updated - Removed
throw errorin error handler to prevent Lambda crashes and allow proper status propagation - This fix completes the Step Functions error handling started in v1.0.18, ensuring
SendTaskFailureis properly triggered - See ImportQueueEventHandler Error Handling for details
- Previously, when a child import job failed with errors like
1.0.18 (2026-01-10)
Bug Fixes
- import: Add
SendTaskFailuresupport toImportStatusHandlerfor proper Step Functions error handling- Previously, when an import job failed, the Step Function would wait indefinitely because only
SendTaskSuccesswas implemented - Now the handler properly sends
SendTaskFailurewhen a job fails, allowing Step Functions to handle errors correctly - Added
sendTaskFailure()method to sendSendTaskFailureCommand - Handler now processes both
COMPLETEDandFAILEDstatuses for CSV import jobs - See ImportStatusHandler API for details
- Previously, when an import job failed, the Step Function would wait indefinitely because only