Skip to content

Changelog

All notable changes to ScriptIt will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.7.1] - 2025-01-29

Fixed

  • Documentation Accuracy: Corrected environment variable precedence order in all documentation
    • Environment Documentation: Fixed docs/cli/environment.md precedence order to match actual implementation
    • Architecture Guide: Updated precedence order in docs/guides/architecture.md
    • README: Fixed environment precedence order to reflect actual code behavior
  • TypeScript Types: Removed unsupported "confirm" type from VariableDefinition interface
    • Only "input" and "password" types are actually implemented and documented
    • Prevents confusion about unsupported features

Enhanced

  • Interactive Prompting Documentation: Added comprehensive section to docs/cli/environment.md
    • Detailed examples of --env-prompts flag usage
    • Declarative variable definition documentation
    • Variable types and security features explanation
    • Smart variable detection behavior

Technical

  • Type Safety: Improved TypeScript interface accuracy
  • Documentation Consistency: All documentation now accurately reflects code implementation
  • No Breaking Changes: All existing functionality remains intact

Corrected Environment Variable Precedence

The documentation now correctly reflects the actual implementation:

  1. Prompted Variables - Collected interactively (Highest priority)
  2. CLI Arguments (--env NAME=value) - CLI-provided environment variables
  3. Config Default Params - From runner.config.js
  4. Environment Files - .env, .env.local, etc. (Lowest priority)

[0.7.0] - 2025-01-29

Added

  • Unified Script Execution Architecture: Complete architectural refactoring for better maintainability
    • Shared Execution Engine: Created executeScriptWithEnvironment() function in src/core/script-executor.ts
    • Interface Abstraction: EnvironmentPrompter interface enables different UI approaches for variable collection
    • Consistent Environment Handling: Unified environment variable precedence across CLI and TUI
  • Enhanced TUI Environment Prompting: Beautiful modal dialogs for environment variable collection
    • Modal Interface: Centered dialogs with visual feedback and keyboard controls
    • Type-Aware Prompting: Password masking and input field differentiation
    • Visual Indicators: Icons and color coding for different variable types
    • Smart Integration: Seamless integration with existing TUI layout
  • CLI Architecture Improvements: Major refactoring for better code organization
    • Centralized Options: CLI_OPTIONS constant eliminates ~20 lines of duplicate code
    • Shared Execution Logic: CLI and TUI now use the same core execution engine
    • Enhanced Prompter: Improved readline-based prompting with password masking

Enhanced

  • Code Maintainability: Significant reduction in code duplication across CLI and TUI
  • Environment Variable System: Enhanced precedence handling and cross-interface consistency
  • Documentation: Comprehensive architecture guide and updated feature documentation
  • Type Safety: Improved TypeScript interfaces and type consistency
  • Security: Enhanced password handling with proper masking and no-logging policies

Technical

  • Core Module: New src/core/script-executor.ts with shared execution logic
  • TUI Prompter: New src/ui/tui-prompter.ts for modal-based environment prompting
  • Interface Consistency: Both CLI and TUI use identical environment variable handling
  • Error Handling: Improved error propagation and user feedback
  • Testing: All 31 tests continue to pass with enhanced functionality

Architecture

  • Separation of Concerns: Clear separation between interface logic and core execution
  • Extensibility: Pluggable prompter system enables future interface additions
  • Backward Compatibility: All existing functionality preserved while adding new capabilities
  • Performance: Optimized execution flow with reduced redundancy

Documentation

  • Architecture Guide: New comprehensive guide explaining the unified system
  • TUI Documentation: Enhanced with modal prompting examples and workflows
  • API Documentation: Updated to reflect new interfaces and capabilities
  • VitePress Integration: Improved documentation site with better navigation

Migration Notes

This is a backward-compatible architectural improvement. Existing scripts continue to work unchanged.

New Capabilities:

  • TUI now supports the same environment variable prompting as CLI
  • Both interfaces provide consistent variable precedence and handling
  • Enhanced modal dialogs in TUI for better user experience
  • Improved code maintainability for future development

Internal Changes:

  • Script execution moved from CLI-specific to shared core module
  • Environment prompting abstracted behind common interface
  • Reduced code duplication and improved maintainability

[0.6.0] - 2025-01-29

Added

  • Interactive Environment Prompts: Revolutionary new feature for secure environment variable collection
    • Declarative Method: Scripts can export variables to define required inputs with custom prompts and types
    • Imperative Method: Use --env-prompts CLI flag to prompt for any variables on demand
    • Smart Detection: Only prompts for variables that aren't already set in the environment
    • Password Masking: Secure input for sensitive data with hidden characters (*)
    • Variable Types: Support for input (default) and password types
    • Mixed Format Support: Shorthand (string array) and full definition (object array) formats
  • Enhanced CLI Options: Added --env-prompts <vars...> option to both exec and run commands
  • Execution Priority System: Intelligent merging of environment sources with proper precedence

Enhanced

  • Script Module Interface: Extended with optional variables property for declarative environment prompts
  • Context Environment: All prompted variables automatically available in context.env
  • Security: Prompted values are process-isolated and not logged in output
  • User Experience: Clear prompting flow with colored output and progress indicators

Technical

  • New Utilities: Added comprehensive prompting utilities in src/common/utils/prompt.ts
  • Type Safety: Enhanced TypeScript interfaces for VariableDefinition and environment handling
  • Cross-Platform: Readline-based prompting works consistently across all supported runtimes
  • Error Handling: Graceful handling of script loading errors during variable detection

Examples

  • Interactive Example Script: Added examples/ui/scripts/interactive-example.ts demonstrating all features
  • Documentation: Comprehensive documentation with usage examples and security guidance

Migration Notes

This is a backward-compatible feature addition. Existing scripts continue to work unchanged.

New Capabilities:

typescript
// Declarative method - in your script
export const variables = [
  { name: 'API_KEY', message: 'Enter API key:', type: 'password' },
  'DATABASE_URL'  // Shorthand
];

export async function execute(context) {
  // Prompted variables available in context.env
  console.log(context.env.API_KEY); // Securely collected
}
bash
# Imperative method - via CLI
scriptit exec script.js --env-prompts API_KEY,SECRET_TOKEN

[0.5.1] - 2025-01-29

Fixed

  • CLI Documentation: Corrected README to match actual CLI implementation
    • Removed non-existent --console-colors flag references
    • Added comprehensive documentation for all available CLI options
    • Fixed console interception configuration examples (consoleInterception: { enabled: true })
  • Type Accuracy: Updated ScriptContext interface to match implementation
    • Fixed console method signatures to use (...args: any[]) instead of (message: string)
    • Added missing params property to ScriptContext
    • Corrected type annotations from any to unknown for better type safety

Enhanced

  • Documentation Structure: Significantly improved README organization and readability
    • Simplified introduction with clearer value proposition
    • Added Quick Start section for immediate value
    • Grouped features into logical categories (Developer Experience, Runtime & Performance, etc.)
    • Consolidated redundant sections and improved scannability
    • Added comprehensive troubleshooting section with common issues and solutions
  • GitHub Actions: Added automated documentation deployment workflow for GitHub Pages
  • CLI Help: Enhanced command documentation with complete option lists and examples

Technical

  • GitHub Pages Deployment: Added automated documentation deployment with GitHub Actions
  • Version Consistency: Updated CLI version string to match package version
  • Documentation Accuracy: All README examples now work exactly as shown without modification

Migration Notes

No breaking changes in this release. All existing functionality continues to work as before.

Documentation Updates

If you were using examples from the README, note these corrections:

  • Colored console is enabled by default in CLI (no flag needed)
  • Use consoleInterception: { enabled: true } instead of consoleInterception: true in library configuration

[0.5.0] - 2025-01-29

Added

  • Colored Console Output: Automatic color coding for different console methods
    • 🤍 White for console.log() - Regular information
    • 🔴 Red for console.error() - Errors and critical issues
    • 🟡 Yellow for console.warn() - Warnings and cautions
    • 🔵 Blue for console.info() - Informational messages
    • ⚫ Gray for console.debug() - Debug information
  • Enhanced Script Context: Scripts now receive context.console with colored output methods
  • Memory-Safe Console Interception: Safe object serialization prevents circular references and memory leaks
  • Cross-Runtime Color Support: Colored console works across Bun, Node.js, and Deno
  • Library Console Interception: Added consoleInterception option to CreateScriptRunnerOptions

Enhanced

  • CLI Experience: Colored console output enabled by default for better debugging
  • Script Execution: Enhanced context provides richer environment for script development
  • Error Handling: Better error formatting and display with colored output
  • Performance: Optimized console interception with minimal overhead

Technical

  • Safe Serialization: Implemented safeStringify() to handle complex objects without circular reference issues
  • Chalk Integration: Leveraged chalk library for consistent color rendering across platforms
  • Context Enhancement: Extended script context with colored console methods

Usage Examples

javascript
// Scripts now have access to colored console via context
export async function execute(context) {
  context.console.log('Regular message');    // White
  context.console.info('Information');       // Blue  
  context.console.warn('Warning');          // Yellow
  context.console.error('Error');           // Red
  context.console.debug('Debug info');      // Gray
}
javascript
// Library usage with console interception
const runner = createScriptRunner({
  consoleInterception: true  // Enable colored console
});

[0.4.2] - 2025-01-28

Fixed

  • Improved error handling in script execution
  • Better TypeScript type definitions
  • Enhanced cross-runtime compatibility

Enhanced

  • More robust environment variable handling
  • Improved TUI responsiveness
  • Better error messages and debugging information

[0.4.1] - 2025-01-27

Fixed

  • Fixed CLI argument parsing edge cases
  • Resolved TUI rendering issues on some terminals
  • Improved default export function error handling

Enhanced

  • Better runtime detection logic
  • Improved .env file loading
  • Enhanced script context with more utilities

[0.4.0] - 2024-12-15

Added

  • Terminal UI (TUI): Interactive script selection and execution interface
  • Enhanced Script Context: Rich context object with environment variables and utilities
  • Cross-Runtime Support: Automatic detection and execution across Bun, Node.js, and Deno
  • Environment Management: Sophisticated .env file handling and variable interpolation
  • Script Lifecycle: Support for tearUp, execute, and tearDown functions
  • Configuration System: Flexible runner.config.js for project-specific settings
  • Error Handling: Comprehensive error reporting and graceful failure handling
  • Logging System: Built-in logging with different levels and formatting

Changed

  • Project Structure: Reorganized codebase for better maintainability
  • CLI Interface: Improved command structure and help documentation
  • Performance: Optimized script loading and execution

Fixed

  • Memory Management: Resolved potential memory leaks in script execution
  • Path Resolution: Fixed issues with relative and absolute path handling
  • Environment Loading: Improved reliability of .env file processing

[0.3.0] - 2025-01-25

Added

  • Library API: Use ScriptIt programmatically in your applications
  • Event System: Listen to script execution events
  • Configuration Files: Support for scriptit.config.js

Enhanced

  • Performance: Optimized script execution performance
  • Documentation: Comprehensive documentation and examples
  • CLI: Improved command-line interface

[0.2.0] - 2025-01-24

Added

  • Cross-Runtime Support: Support for Bun, Node.js, and Deno
  • Environment Variables: Automatic .env file loading
  • Script Context: Enhanced script execution context

Enhanced

  • CLI Interface: Improved command-line interface
  • Error Handling: Better error messages and debugging

[0.1.0] - 2025-01-23

Added

  • Initial Release: Basic script execution functionality
  • CLI Tool: Command-line interface for running scripts
  • Bun Support: Optimized for Bun runtime

Migration Guides

Upgrading to v0.5.0

The v0.5.0 release introduces colored console output. To use this feature:

CLI Usage

bash
# Colored console is enabled by default in CLI
scriptit exec my-script.js

Library Usage

typescript
import { createScriptRunner } from '@glyphtek/scriptit'

const runner = createScriptRunner({
  consoleInterception: { enabled: true }  // Enable colored console
})

Script Updates

For best results, update your scripts to use the context console:

javascript
// Recommended approach
const console = context.console || global.console

console.log('This will be colored when interception is enabled')
console.error('This will be red')
console.warn('This will be yellow')

Upgrading to v0.4.0

The v0.4.0 release introduced the TUI and default export functions. No breaking changes were made, but new features are available:

bash
# Use the new TUI interface
scriptit run

# Execute scripts directly
scriptit exec my-script.js

Contributing

We welcome contributions! Please see our Contributing Guide for details.

Support

Released under the MIT License.