List view
## v0.8.4 Release - TConfig Generic Support in CLI Minor release adding TConfig generic parameter to createCLI for type-safe custom configuration types. ### Feature **#152: TConfig Generic Parameter in createCLI** - Added TConfig generic to CLIOptions and createCLI interfaces - extendFlags and createExecutor callbacks now receive typed config - Full IntelliSense support for custom config properties - No type casting needed for adapter-specific configs ### Impact **Firebase Team Unblocked:** - Can use `createCLI<IFirebaseDB, FirebaseAdapter, FirebaseConfig>()` with full type safety - extendFlags callback receives FirebaseConfig type (not base Config) - createExecutor callback receives FirebaseConfig type (not base Config) **Type Safety Completion:** - Completes type safety story from v0.8.0-v0.8.3 - Consistent with THandler (#138) and executor TConfig (#144) - Same pattern across all generic type parameters ### Quality Metrics - **Tests:** 1572 passing (+4 new tests for TConfig support) - **Coverage:** 100% maintained (2815/1450/581/2713) - **Backward Compatibility:** ✅ Default `TConfig = Config` preserves existing behavior - **Documentation:** Updated cli-adapter-development.md with Firebase examples - **Effort:** ~10 minutes implementation (as estimated) ### Related Issues - #138: Added THandler generic for type-safe handler access - #144: Added TConfig generic to executor interfaces - #151: Added addCustomOptions/extendFlags callbacks (v0.8.3) ### Migration **No breaking changes** - fully backward compatible. Existing code works without modifications. **Optional Enhancement:** ```typescript // Before (works but requires casting) createCLI({ ... }) // After (optional type safety) createCLI<IDB, Adapter, CustomConfig>({ ... }) ```
No due date•1/1 issues closed## v0.8.3 - Adapter-Specific CLI Flags Minor release adding support for database-specific command-line flags in adapters. ### Features **Adapter-Specific CLI Flags (#151)** - Added `addCustomOptions(program)` callback to register custom CLI flags - Added `extendFlags(config, flags)` callback to map flag values to config - Custom flags have highest priority in config waterfall - Enables single-command execution without environment variables - Perfect for CI/CD pipelines and adapter-specific parameters ### Examples **Firebase Adapter:** ```bash npx msr-firebase migrate --database-url https://project.firebaseio.com --credentials ./key.json ``` **MongoDB Adapter:** ```bash npx msr-mongodb migrate --mongo-uri mongodb://localhost --auth-source admin ``` ### Quality Metrics - **Tests:** 1568 passing (+8) - **Coverage:** 100% (2815 statements, 1450 branches, 581 functions, 2713 lines) - **Documentation:** 120+ lines with examples - **Compatibility:** Fully backward compatible (callbacks optional) ### Migration Notes No breaking changes. Existing adapters continue to work without modification. Adapters can opt-in to custom CLI flags by adding the two new callbacks. **Installation:** `npm install @migration-script-runner/[email protected]`
No due date•1/1 issues closed**Release Date:** December 20, 2025 ## Overview MSR Core v0.8.2 focuses on **developer experience improvements** for adapter development, making it easier and faster to create database adapters with better type safety, reduced boilerplate, and clearer error messages. ## Issues Completed (4/4) ### #144: Generic Config Type in IExecutorOptions ✅ Added `TConfig` generic parameter for custom configuration types, enabling full type safety for database-specific config properties without wrapper interfaces. **Benefits:** - Type-safe custom config properties - Zero type assertions needed - Fully backward compatible ### #145: Async Executor Support in CLI ✅ CLI now supports `Promise<Executor>` return type from `createExecutor`, enabling async adapter initialization patterns. **Benefits:** - Async database connections supported - No more unsafe type casts - Fully backward compatible ### #146: Better Documentation and Error Messages ✅ Enhanced API documentation with PUBLIC/INTERNAL markers and added runtime validation with helpful error messages. **Improvements:** - Clear API boundaries (IExecutorOptions vs IMigrationExecutorDependencies) - Self-documenting interfaces with examples - Comprehensive troubleshooting guide (185 lines) - Helpful runtime errors with solutions ### #147: createInstance Factory Pattern ✅ Added standardized factory method for async adapter initialization, reducing boilerplate from ~10 lines to 3 lines per adapter. **Benefits:** - Standardized pattern across ecosystem - Type-safe with full generic support - Handles async connections, auth, pooling naturally - Documentation restructured to show async-first approach (9/10 adapters are async) ## Key Achievements ✅ **Better Developer Experience** - Clear documentation with PUBLIC/INTERNAL API markers - Helpful error messages with actionable solutions - Comprehensive troubleshooting guide ✅ **Reduced Boilerplate** - createInstance helper reduces adapter code by 70% - Generic config support eliminates wrapper interfaces - Async patterns standardized across ecosystem ✅ **Full Type Safety** - Custom config types fully supported - No type assertions required - All generics flow correctly through inheritance ✅ **Production Ready** - 1560 tests passing - 100% coverage on all metrics (2811/1448/581/2709) - All builds and lints passing - Fully backward compatible (no breaking changes) ## Documentation Updates - **getting-started.md**: Restructured to show async pattern first - **cli-adapter-development.md**: Updated Quick Start, Complete Example, added Troubleshooting section - **api/core-classes.md**: Added createInstance documentation - **design-patterns.md**: Added async adapter factory pattern section ## What's New for Adapter Developers **Before v0.8.2:** ```typescript // Manual async pattern - 10+ lines of boilerplate class FirebaseRunner extends MigrationScriptExecutor<IFirebaseDB, FirebaseHandler> { private constructor(deps: IMigrationExecutorDependencies<IFirebaseDB, FirebaseHandler>) { super(deps); } static async getInstance(options: IFirebaseRunnerOptions): Promise<FirebaseRunner> { const handler = await FirebaseHandler.getInstance(options.config); return new FirebaseRunner({ handler, ...options }); } } ``` **After v0.8.2:** ```typescript // createInstance helper - 3 lines static async getInstance(options: IFirebaseRunnerOptions): Promise<FirebaseRunner> { return MigrationScriptExecutor.createInstance( FirebaseRunner, options, (config) => FirebaseHandler.getInstance(config) ); } ``` ## Migration Notes **No breaking changes.** All changes are backward compatible. - Existing adapters continue to work without modifications - New features are opt-in - Documentation provides upgrade path ## Related Milestones - v0.8.0: Locking mechanism, THandler generic - v0.8.1: Locking lifecycle methods, LockingOrchestrator, getHandler() - v1.0.0 (planned): Make MigrationScriptExecutor abstract class (#150)
No due date•5/5 issues closed**v0.8.1 Release - December 2025** Minor enhancements and improvements to v0.8.0 locking features. ## Features Added ### #142: Handler Access API - Added `getHandler(): THandler` public method to MigrationScriptExecutor - Enables direct handler access for CLI custom commands - Removes need for adapter-specific workarounds (e.g., FirebaseRunner.getHandler()) - Full type safety through THandler generic parameter ### #140: Locking Service Lifecycle (BREAKING CHANGE) - Added **required** initialization methods to ILockingService interface: - `initLockStorage(): Promise<void>` - Creates lock storage structures - `ensureLockStorageAccessible(): Promise<boolean>` - Pre-flight accessibility check - Fail-fast principle: setup errors occur at initialization, not first lock acquisition - Explicit lifecycle management for all locking adapters - **Breaking**: All ILockingService implementations must implement these methods ### #141: Lock Orchestration Service - Added LockingOrchestrator service using decorator pattern - Wraps ILockingService implementations with: - Retry logic with configurable attempts/delays - Two-phase locking (acquire → verify ownership) - Lifecycle hooks for observability (metrics, alerts, audit) - Comprehensive error handling - Added ILockingHooks interface with 9 optional hook methods - Integrated into MigrationWorkflowOrchestrator - Consistent lock orchestration across all database adapters ## Statistics - **Issues Closed**: 3 (#140, #141, #142) - **Tests Added**: 45 new unit/integration tests - **Total Tests**: 1547 passing (up from 1497 in v0.8.0) - **Coverage**: 100% on all metrics (statements, branches, functions, lines) - **Breaking Changes**: 1 (#140 - required methods in ILockingService) ## Upgrade Notes ⚠️ **Breaking Change**: Issue #140 requires all `ILockingService` implementations to add: - `initLockStorage(): Promise<void>` - `ensureLockStorageAccessible(): Promise<boolean>` See migration guide for upgrade instructions. ## Quality - ✅ 100% test coverage maintained - ✅ All linting checks passed - ✅ TypeScript compilation successful - ✅ No security vulnerabilities
No due date•4/4 issues closed## 🔐 Automated npm Publishing Implemented tag-based automated npm publishing workflow with cryptographic provenance. ### Features - **Tag-based publishing**: Push git tag to automatically publish to npm - **Provenance signing**: Cryptographic build transparency - **Automated workflow**: Build, test, and publish via GitHub Actions - **Security**: Granular npm tokens with 90-day expiration ### Issues - #133 - Update npm publishing to use provenance and granular access tokens ### Release Released as [v0.7.4](https://github.com/migration-script-runner/msr-core/releases/tag/v0.7.4) **Published to npm**: [@migration-script-runner/[email protected]](https://www.npmjs.com/package/@migration-script-runner/core/v/0.7.3) (with provenance)
No due date•2/2 issues closedProduction-ready release with migration locking, enhanced type safety, and critical bug fixes. **Key Features:** - 🔒 Migration Locking - Database-level locking prevents concurrent migrations in multi-instance deployments - 🛡️ Lock Ownership Verification - Two-phase locking prevents race conditions - 🖥️ Lock CLI Commands - `lock:status` and `lock:release` commands for lock management - 🔧 Handler Generic Type - Type-safe handler access in adapters (no more casting!) - 🐛 Down Migration Fix - Fixed TypeError when rolling back migrations - 📦 npm Provenance - Enhanced supply chain security **Backwards Compatibility:** ✅ 100% backwards compatible with v0.7.x - all features are opt-in **Issues Closed:** 8 **Release Date:** December 2024
No due date•8/8 issues closed## v0.7.0 - CLI Factory, .env Support, and Improved Architecture Enhanced architecture, adapter extensibility, and production-ready CLI tooling. ### ✨ Key Features - **🖥️ CLI Factory** - Create command-line interfaces with built-in commands - **🗂️ .env File Support** - Load configuration from .env files with priority control - **🎨 Facade Pattern** - Services grouped into logical facades (70% code reduction) - **🏭 Factory Pattern** - Dedicated service factory (83% constructor reduction) - **✨ Extensible Configuration** - IConfigLoader interface for custom env vars - **🔧 Protected Facades** - Adapters can extend executor and access internal services ### 🔨 Breaking Changes - Constructor signature changed (config moved to dependencies) - Service properties removed (use public API methods instead) ### 📊 Quality - **100% Test Coverage** - 1400 tests passing - **Zero Quality Issues** - All SonarCloud checks passing - **83% Constructor Reduction** - 142 → 23 lines - **70% Code Reduction** - 1564 → 467 lines ### 📚 Documentation - CLI Adapter Development Guide - CLI vs API Usage Guide - Complete Migration Guide (v0.6 → v0.7) - .env File Support Documentation **Release:** https://github.com/migration-script-runner/msr-core/releases/tag/v0.7.0
No due date•13/13 issues closed## ✅ Completed **Release Date**: December 5, 2025 This milestone delivered major improvements in observability, configuration flexibility, and documentation quality for v0.6.0. --- ## 🎯 Key Achievements ### Features Delivered - ✅ Metrics & Observability System (#80) - ✅ Multi-Format Configuration Support (#98) - ✅ Generic Type Parameters (#114) - ✅ Banner Control (#100) - ✅ Debug Logging (#115) ### Quality Improvements - ✅ Code Review: 43 of 46 issues resolved (#109) - ✅ Security: npm vulnerabilities fixed (#117) - ✅ 100% test coverage maintained (1,224 tests) ### Documentation - ✅ Origin story and design philosophy (#104) - ✅ Local testing guide (#108) - ✅ Migration guide v0.5.x → v0.6.0 (#110) - ✅ SEO improvements with sitemap.xml (#101) - ✅ Google Analytics integration (#111, #112) --- ## 📊 Metrics - **13 issues closed** - **43 code quality improvements** - **100% backward compatibility** - **Zero breaking changes** --- ## 🔗 Resources - **Release**: https://github.com/migration-script-runner/msr-core/releases/tag/v0.6.0 - **Documentation**: https://core.msr.lavr.site - **Migration Guide**: https://core.msr.lavr.site/version-migration/v0.5-to-v0.6
No due date•14/14 issues closed## v0.5.0 - Transaction Management & Cloud-Native Configuration **Status:** ✅ Released (January 2025) **Theme:** Production-ready transaction management with cloud-native configuration and comprehensive quality improvements --- ## 🎉 Release Highlights This release delivers powerful new capabilities for production deployments while maintaining **100% backward compatibility** with v0.4.x. ### Major Features **🔒 Transaction Management (#76)** - Configurable modes: PER_MIGRATION, PER_BATCH, NONE - Automatic retry logic with exponential backoff - SQL isolation levels (READ_UNCOMMITTED to SERIALIZABLE) - NoSQL transaction support (MongoDB, Firestore, DynamoDB) - Transaction lifecycle hooks for monitoring and metrics **⚙️ Environment Variables (#84)** - 33 MSR_* environment variables for complete configuration - 12-factor app principles for Docker/Kubernetes deployments - ConfigLoader with automatic waterfall loading - Organized by category: Core, Validation, Logging, Backup, Transaction **🏗️ Code Quality (#94)** - Addressed 47 SonarQube findings - Reduced cognitive complexity across codebase - Enhanced type safety and error handling - Improved maintainability and readability **📚 Documentation (#95)** - Comprehensive v0.4.x → v0.5.0 migration guide - Restructured API reference with environment variables - Updated all guides with v0.5.0 examples - Fixed all broken links and outdated references --- ## 📦 What's Included ### Transaction Management (#76) Complete transaction control for production deployments: ```typescript const config = new Config(); config.transaction.mode = TransactionMode.PER_MIGRATION; config.transaction.isolation = IsolationLevel.READ_COMMITTED; config.transaction.retries = 5; config.transaction.retryBackoff = true; ``` **Features:** - Three transaction modes with automatic boundary management - Configurable isolation levels for SQL databases - Automatic retry with exponential backoff for transient failures - Callback-based transactions for NoSQL databases - Transaction lifecycle hooks for monitoring ### Environment Variables (#84) Cloud-native configuration following 12-factor app principles: ```bash export MSR_FOLDER=./migrations export MSR_TRANSACTION_MODE=PER_MIGRATION export MSR_TRANSACTION_RETRIES=5 export MSR_VALIDATE_BEFORE_RUN=true ``` **Categories:** - Core configuration (folder, table name, dry run) - Validation settings (strict mode, policies) - Logging configuration (level, file output) - Backup settings (mode, folder, retention) - Rollback strategies - Transaction management ### Code Quality (#94) Comprehensive code review addressing: - 47 SonarQube findings resolved - Reduced cognitive complexity in critical paths - Enhanced type safety (removed `any` types) - Improved error handling and validation - Better separation of concerns ### Documentation (#95) Complete documentation overhaul: - v0.4.x → v0.5.0 migration guide with examples - Restructured API reference with environment variables - Updated home and comparison pages - Fixed all broken links (user-guides → guides) - Enhanced feature descriptions --- ## 📊 Final Metrics - **Tests:** 919 passing - **Coverage:** 100% (1914 statements, 987 branches, 449 functions) - **Issues Closed:** 4/4 - **Documentation Pages:** 50+ - **Environment Variables:** 33 - **Breaking Changes:** 0 (100% backward compatible) --- ## 🚫 Moved to Backlog These features were deferred for future releases: - #85 - Locking Mechanism - #87 - Testing Framework - #83 - Migration Generator - #97 - MigrationScriptExecutor Refactoring --- ## 🔗 Resources - **Release Notes:** https://github.com/migration-script-runner/msr-core/releases/tag/v0.5.0 - **Migration Guide:** https://migration-script-runner.github.io/msr-core/version-migration/v0.4-to-v0.5 - **Documentation:** https://migration-script-runner.github.io/msr-core/ - **npm Package:** https://www.npmjs.com/package/@migration-script-runner/core --- **Released:** January 2025 **100% Backward Compatible** - No breaking changes
Due by June 30, 2026•5/5 issues closed## v0.4.0 - SQL Support, API Improvements & Enhanced Developer Experience **Status:** ✅ Released Major release introducing SQL migration files, simplified API, and comprehensive developer experience improvements. --- ## ✨ Features Delivered ### SQL Migration Support (#58) - First-class support for .up.sql and .down.sql files - ISqlDB interface for SQL execution - Loader architecture for extensible file type support - Hybrid projects: mix TypeScript and SQL migrations ### Simplified API (#81) - Industry-standard method names: up()/down() - Consolidated migration methods (migrateTo → up, downTo → down) - migrate() retained as alias for backward compatibility - Clearer, more intuitive API surface ### Developer Experience Enhancements - **Dry Run Mode** (#73) - Preview migrations without execution - **Execution Summary Logging** (#72) - Detailed migration logs with file rotation - **Connection Validation** (#88) - Early connection checking with checkConnection() - **Multi-pattern Support** - filePattern → filePatterns (array) for multiple file types ### Architecture Improvements - Extensible loader system (TypeScriptLoader, SqlLoader, ILoaderRegistry) - Enhanced type safety across interfaces - Improved error handling and validation --- ## 🔧 Breaking Changes 1. **filePattern → filePatterns** - Now accepts array of patterns 2. **API method renames** - migrateTo → up, downTo → down 3. **IDB.checkConnection() required** - All database implementations must implement 4. **Interface renames** - migrations → migrationRecords, getAll() → getAllExecuted() 5. **Service method renames** - readMigrationScripts → findMigrationScripts 6. **IBackup parameter rename** - restore(data) → restore(backupData) See [Migration Guide](https://migration-script-runner.github.io/msr-core/version-migration/v0.3-to-v0.4) for upgrade instructions. --- ## 📚 Documentation - Comprehensive v0.3.x → v0.4.0 migration guide - SQL migrations guide with examples - Updated API documentation - Reorganized interface documentation - Updated all recipes and examples --- **Released:** January 2025
Due by June 29, 2026•11/11 issues closed## v0.2.2 - CI/CD and Documentation Updates **Status:** ✅ Complete (4/4 issues closed) This patch release focuses on restoring full automated CI/CD workflow and improving documentation. ### 🔧 CI/CD Improvements - ✅ Restored full npm-publish workflow (#54) - ✅ Removed TravisCI (expired free plan) (#55) - ✅ Configured CircleCI to upload coverage to Coveralls (#56) - ✅ Fixed GitHub Actions permissions for organization repository ### 📝 Documentation - ✅ Added comprehensive Contributing guide (#57) - Development setup and workflow - Automated and manual publishing instructions - Release checklist and guidelines - Code style and PR process ### Goals - ✅ Restore full automated publishing pipeline - ✅ Ensure automated npm publish works with organization - ✅ Verify automated tag creation works - ✅ Migrate from TravisCI to CircleCI for coverage - ✅ Provide clear contribution guidelines ### Release - npm: https://www.npmjs.com/package/@migration-script-runner/core - Release: https://github.com/migration-script-runner/msr-core/releases/tag/v0.2.2 - Docs: https://migration-script-runner.github.io/msr-core/ No code changes - CI/CD and documentation improvements only.
Due by December 31, 2025•4/4 issues closed## v0.2.1 - Infrastructure Updates **Status:** 🔄 In Progress (0/2 issues closed) This minor release focuses on completing the infrastructure migration tasks from v0.2.0. ### 🔧 Infrastructure Tasks - [ ] Reconfigure Coveralls for new organization (#52) - [ ] Reconfigure SonarCloud for new organization (#53) ### Goals - ✅ Complete all infrastructure migration from v0.2.0 - ✅ Ensure CI/CD quality gates work with new organization - ✅ Maintain 100% test coverage reporting No code changes or new features - infrastructure only.
Due by December 31, 2025•2/2 issues closed## v0.3.0 - Architecture Improvements & New Features ✅ **Status:** ✅ Complete (27/27 issues closed) This minor release delivered major architectural improvements, code quality enhancements, and highly requested features to make MSR more flexible, maintainable, and production-ready. --- ## 🎯 Key Achievements ### Architecture & Code Quality - **Dependency Injection** - All services now use constructor injection for testability - **Service Interfaces** - Clean contracts for all core services (ILogger, IBackupService, etc.) - **Reduced Complexity** - Refactored MigrationScriptExecutor from God Class to orchestrator - **Type Safety** - Eliminated `any` types, defined proper interfaces throughout - **100% Test Coverage** - Comprehensive test suite with full branch coverage - **Strategy Pattern** - Flexible output rendering (ASCII, JSON, Silent modes) ### New Features - **Version Control** - `migrateTo()` and `downTo()` for controlled upgrades/downgrades (#67) - **Flexible Rollback** - Multiple strategies: BACKUP, DOWN, BOTH, NONE (#50, #17) - **Granular Backup Control** - Public backup/restore methods, backup-only mode (#65) - **Script Validation** - Pre-execution validation with configurable policies (#66) - **Before-Migrate Hook** - File-based setup script support (#26) - **Sub-folder Support** - Organize migrations in nested directories (#16) - **Composite Logger** - Multi-destination logging support (#60) - **Extension Hooks** - beforeMigrate, afterMigrate, onError lifecycle hooks (#47) ### Library Improvements - **Removed process.exit()** - MSR is now fully usable as a library (#41) - **Separated Config** - Clean separation from database handler interface (#63) - **Migration Scanner** - Extracted for better migration state clarity (#61) - **Multiple Output Formats** - ASCII tables, JSON, or silent mode (#49) ### Documentation & Infrastructure - **Comprehensive Documentation** - Complete rewrite with diagrams, recipes, and guides (#64) - **GitHub Pages Site** - Custom domain: https://core.msr.lavr.site (#69) - **Architecture Docs** - Detailed component, data flow, and lifecycle documentation (#46) - **Mermaid Diagrams** - Visual architecture and workflow diagrams - **Updated License** - MIT + Commons Clause + Attribution (#71) --- ## 🔧 Bug Fixes - Fixed backup file renaming bug in BackupService (#43) --- ## 📦 Migration from v0.2.x **Breaking Changes:** - `Config` is now a separate parameter (no longer part of handler interface) - Service constructors now require explicit dependencies - `process.exit()` removed - handle `IMigrationResult.success` in your code See migration guide: https://core.msr.lavr.site/version-migration/v2-to-v3
Due by March 31, 2026•27/27 issues closed## v0.2.0 - Migration to Organization & Package Rename **Status:** ✅ Complete (32/32 issues closed) This release marks the migration of the project to the `migration-script-runner` organization and the package rename from `migration-script-runner` to `@migration-script-runner/core`. ### 🎉 Major Changes - ✅ Package renamed to `@migration-script-runner/core` - ✅ Moved to `migration-script-runner` GitHub organization - ✅ Published to npm under new scoped package name - ✅ Old package deprecated with migration instructions ### ✨ New Features - ✅ Display limit configuration for console output - ✅ List method to view migrations without running them - ✅ Comprehensive JSDoc documentation for all public APIs - ✅ GitHub Pages documentation site with guides and examples ### 📚 Documentation - ✅ Complete README with examples and use cases - ✅ API reference documentation - ✅ Migration guide from v0.1.x to v0.2.0 - ✅ Configuration guide - ✅ Getting started guide ### 🔧 Technical Improvements - ✅ Updated CI/CD pipelines (CircleCI, Travis, GitHub Actions) - ✅ Comprehensive test suite with 100% code coverage - ✅ Mutation testing with Stryker - ✅ Updated dependencies to latest versions ### 📦 Release - npm: https://www.npmjs.com/package/@migration-script-runner/core - Release: https://github.com/migration-script-runner/msr-core/releases/tag/v0.2.0 - Docs: https://migration-script-runner.github.io/msr-core/
Due by December 31, 2025•32/32 issues closed