# Changelog ## 2025-05-26 - 2.3.0 - feat(cli) Add '--version' option and warn against global tstest usage in the tstest project - Introduced a new '--version' CLI flag that prints the version from package.json - Added logic in ts/index.ts to detect if tstest is run globally within its own project and issue a warning - Added .claude/settings.local.json to configure allowed permissions for various commands ## 2025-05-26 - 2.2.6 - fix(tstest) Improve timeout warning timer management and summary output formatting in the test runner. - Removed the global timeoutWarningTimer and replaced it with local warning timers in runInNode and runInChrome methods. - Added warnings when test files run for over one minute if no timeout is specified. - Ensured proper clearing of warning timers on successful completion or timeout. - Enhanced quiet mode summary output to clearly display passed and failed test counts. ## 2025-05-26 - 2.2.5 - fix(protocol) Fix inline timing metadata parsing and enhance test coverage for performance metrics and timing edge cases - Updated the protocol parser to correctly parse inline key:value pairs while excluding prefixed formats (META:, SKIP:, TODO:, EVENT:) - Added new tests for performance metrics, timing edge cases, and protocol timing to verify accurate timing capture and retry handling - Expanded documentation in readme.hints.md to detail the updated timing implementation and parser fixes ## 2025-05-26 - 2.2.4 - fix(logging) Improve performance metrics reporting and add local permissions configuration - Add .claude/settings.local.json to configure allowed permissions for various commands - Update tstest logging: compute average test duration from actual durations and adjust slowest test display formatting ## 2025-05-26 - 2.2.3 - fix(readme/ts/tstest.plugins) Update npm package scope and documentation to use '@git.zone' instead of '@gitzone', and add local settings configuration. - Changed npm package links and source repository URLs in readme from '@gitzone/tstest' to '@git.zone/tstest'. - Updated comments in ts/tstest.plugins.ts to reflect the correct '@git.zone' scope. - Added .claude/settings.local.json file with local permission settings. ## 2025-05-26 - 2.2.2 - fix(config) Cleanup project configuration by adding local CLAUDE settings and removing redundant license files - Added .claude/settings.local.json with updated permissions for CLI and build tasks - Removed license and license.md files to streamline repository content ## 2025-05-26 - 2.2.1 - fix(repo configuration) Update repository metadata to use 'git.zone' naming and add local permission settings - Changed githost from 'gitlab.com' to 'code.foss.global' and gitscope from 'gitzone' to 'git.zone' in npmextra.json - Updated npm package name from '@gitzone/tstest' to '@git.zone/tstest' in npmextra.json and readme.md - Added .claude/settings.local.json with new permission configuration ## 2025-05-26 - 2.2.0 - feat(watch mode) Add watch mode support with CLI options and enhanced documentation - Introduce '--watch' (or '-w') and '--watch-ignore' CLI flags for automatic test re-runs - Integrate @push.rocks/smartchok for file watching with 300ms debouncing - Update readme.md and readme.hints.md with detailed instructions and examples for watch mode - Add a demo test file (test/watch-demo/test.demo.ts) to illustrate the new feature - Add smartchok dependency in package.json ## 2025-05-26 - 2.1.0 - feat(core) Implement Protocol V2 with enhanced settings and lifecycle hooks - Migrated to Protocol V2 using Unicode markers and structured metadata with new ts_tapbundle_protocol module - Refactored TAP parser/emitter to support improved protocol parsing and error reporting - Integrated global settings via tap.settings() and lifecycle hooks (beforeAll/afterAll, beforeEach/afterEach) - Enhanced expect wrapper with diff generation for clearer assertion failures - Updated test loader to automatically run 00init.ts for proper test configuration - Revised documentation (readme.hints.md, readme.plan.md) to reflect current implementation status and remaining work ## 2025-05-25 - 2.0.0 - BREAKING CHANGE(protocol) Introduce protocol v2 implementation and update build configuration with revised build order, new tspublish files, and enhanced documentation - Added ts_tapbundle_protocol directory with isomorphic implementation for protocol v2 - Updated readme.hints.md and readme.plan.md to explain the complete replacement of the v1 protocol and new build process - Revised build order in tspublish.json files across ts, ts_tapbundle, ts_tapbundle_node, and ts_tapbundle_protocol - Introduced .claude/settings.local.json with updated permission settings for CLI and build tools ## 2025-05-24 - 1.11.5 - fix(tstest) Fix timeout handling to correctly evaluate TAP results after killing the test process. - Added call to evaluateFinalResult() after killing the process in runInNode to ensure final TAP output is processed. ## 2025-05-24 - 1.11.4 - fix(logging) Improve warning logging and add permission settings file - Replace multiple logger.error calls with logger.warning for tests running over 1 minute - Add warning method in tstest logger to display warning messages consistently - Introduce .claude/settings.local.json to configure allowed permissions ## 2025-05-24 - 1.11.3 - fix(tstest) Add timeout warning for long-running tests and introduce local settings configuration - Add .claude/settings.local.json with permission configuration for local development - Implement a timeout warning timer that notifies when tests run longer than 1 minute without an explicit timeout - Clear the timeout warning timer upon test completion - Remove unused import of logPrefixes in tstest.classes.tstest.ts ## 2025-05-24 - 1.11.2 - fix(tstest) Improve timeout and error handling in test execution along with TAP parser timeout logic improvements. - In the TAP parser, ensure that expected tests are properly set when no tests are defined to avoid false negatives on timeout. - Use smartshell's terminate method and fallback kill to properly stop the entire process tree on timeout. - Clean up browser, server, and WebSocket instances reliably even when a timeout occurs. - Minor improvements in log file filtering and error logging for better clarity. ## 2025-05-24 - 1.11.1 - fix(tstest) Clear timeout identifiers after successful test execution and add local CLAUDE settings - Ensure timeout IDs are cleared when tests complete to prevent lingering timeouts - Add .claude/settings.local.json with updated permission settings for CLI commands ## 2025-05-24 - 1.11.0 - feat(cli) Add new timeout and file range options with enhanced logfile diff logging - Introduce --timeout option to safeguard tests from running too long - Add --startFrom and --stopAt options to control the range of test files executed - Enhance logfile organization by automatically moving previous logs and generating diff reports for failed or changed test outputs - Update CLI argument parsing and internal timeout handling for both Node.js and browser tests ## 2025-05-24 - 1.10.2 - fix(tstest-logging) Improve log file handling with log rotation and diff reporting - Add .claude/settings.local.json to configure allowed shell and web operations - Introduce movePreviousLogFiles function to archive previous log files when --logfile is used - Enhance logging to generate error copies and diff reports between current and previous logs - Add type annotations for console overrides in browser evaluations for improved stability ## 2025-05-23 - 1.10.1 - fix(tstest) Improve file range filtering and summary logging by skipping test files outside the specified range and reporting them in the final summary. - Introduce runSingleTestOrSkip to check file index against startFrom/stopAt values. - Log skipped files with appropriate messages and add them to the summary. - Update the logger to include total skipped files in the test summary. - Add permission settings in .claude/settings.local.json to support new operations. ## 2025-05-23 - 1.10.0 - feat(cli) Add --startFrom and --stopAt options to filter test files by range - Introduced CLI options --startFrom and --stopAt in ts/index.ts for selective test execution - Added validation to ensure provided range values are positive and startFrom is not greater than stopAt - Propagated file range filtering into test grouping in tstest.classes.tstest.ts, applying the range filter across serial and parallel groups - Updated usage messages to include the new options ## 2025-05-23 - 1.9.4 - fix(docs) Update documentation and configuration for legal notices and CI permissions. This commit adds a new local settings file for tool permissions, refines the legal and trademark sections in the readme, and improves glob test files with clearer log messages. - Added .claude/settings.local.json to configure permissions for various CLI commands - Revised legal and trademark documentation in the readme to clarify company ownership and usage guidelines - Updated glob test files with improved console log messages for better clarity during test discovery ## 2025-05-23 - 1.9.3 - fix(tstest) Fix test timing display issue and update TAP protocol documentation - Changed TAP parser regex to non-greedy pattern to correctly separate test timing metadata - Enhanced readme.hints.md with detailed explanation of test timing fix and planned protocol upgrades - Updated readme.md with improved usage examples for tapbundle and comprehensive test framework documentation - Added new protocol design document (readme.protocol.md) and improvement plan (readme.plan.md) outlining future changes - Introduced .claude/settings.local.json update for npm and CLI permissions - Exported protocol utilities and added tapbundle protocol implementation for future enhancements ## 2025-05-23 - 1.9.2 - fix(logging) Fix log file naming to prevent collisions and update logging system documentation. - Enhance safe filename generation in tstest logging to preserve directory structure using double underscores. - Update readme.hints.md to include detailed logging system documentation and behavior. - Add .claude/settings.local.json with updated permissions for build tools. ## 2025-05-23 - 1.9.1 - fix(dependencies) Update dependency versions and add local configuration files - Bump @git.zone/tsbuild from ^2.5.1 to ^2.6.3 - Bump @types/node from ^22.15.18 to ^22.15.21 - Bump @push.rocks/smartexpect from ^2.4.2 to ^2.5.0 - Bump @push.rocks/smartfile from ^11.2.0 to ^11.2.3 - Bump @push.rocks/smartlog from ^3.1.1 to ^3.1.8 - Add .npmrc with npm registry configuration - Add .claude/settings.local.json for local permissions ## 2025-05-16 - 1.9.0 - feat(docs) Update documentation to embed tapbundle and clarify module exports for browser compatibility; also add CI permission settings. - Embed tapbundle directly into tstest to simplify usage and ensure browser support. - Update import paths in examples from '@push.rocks/tapbundle' to '@git.zone/tstest/tapbundle'. - Revise the changelog to reflect version 1.8.0 improvements including enhanced test lifecycle hooks and parallel execution fixes. - Add .claude/settings.local.json to configure CI-related permissions and tool operations. ## 2025-05-16 - 1.8.0 - feat(documentation) Enhance README with detailed test features and update local settings for build permissions. - Expanded the documentation to include tag filtering, parallel test execution groups, lifecycle hooks, snapshot testing, timeout control, retry logic, and test fixtures - Updated .claude/settings.local.json to allow additional permissions for various build and test commands ## 2025-05-16 - 1.7.0 - feat(tstest) Enhance tstest with fluent API, suite grouping, tag filtering, fixture & snapshot testing, and parallel execution improvements - Updated npm scripts to run tests in verbose mode and support glob patterns with quotes - Introduced tag filtering support (--tags) in the CLI to run tests by specified tags - Implemented fluent syntax methods (tags, priority, retry, timeout) for defining tests and applying settings - Added test suite grouping with describe(), along with beforeEach and afterEach lifecycle hooks - Integrated a fixture system and snapshot testing via TapTools with base64 snapshot communication - Enhanced TAP parser regex, error collection, and snapshot handling for improved debugging - Improved parallel test execution by grouping files with a 'para__' pattern and running them concurrently ## 2025-05-15 - 1.6.0 - feat(package) Revamp package exports and update permissions with an extensive improvement plan for test runner enhancements. - Replaced 'main' and 'typings' in package.json with explicit exports for improved module resolution. - Added .claude/settings.local.json to configure permissions for bash commands and web fetches. - Updated readme.plan.md with a comprehensive roadmap covering enhanced error reporting, rich test metadata, nested test suites, and advanced test features. ## 2025-05-15 - 1.5.0 - feat(cli) Improve test runner configuration: update test scripts, reorganize test directories, update dependencies and add local settings for command permissions. - Updated package.json scripts to use pnpm and separate commands for tapbundle and tstest. - Reorganized tests into dedicated directories (test/tapbundle and test/tstest) and removed deprecated test files. - Refactored import paths and bumped dependency versions in tapbundle, tstest, and associated node utilities. - Added .claude/settings.local.json to configure local permissions for bash and web fetch commands. - Introduced ts/tspublish.json to define publish order. ## 2025-05-15 - 1.4.0 - feat(logging) Display failed test console logs in default mode - Introduce log buffering in TsTestLogger to capture console output for failed tests - Enhance TapParser to collect and display error details when tests fail - Update README and project plan to document log improvements for debugging ## 2025-05-15 - 1.3.1 - fix(settings) Add local permissions configuration and remove obsolete test output log - Added .claude/settings.local.json to configure allowed permissions for web fetch and bash commands - Removed test-output.log to eliminate accidental commit of test artifacts ## 2025-05-15 - 1.3.0 - feat(logger) Improve logging output and add --logfile support for persistent logs - Add new .claude/settings.local.json with logging permissions configuration - Remove obsolete readme.plan.md - Introduce test/test.console.ts to capture and display console outputs during tests - Update CLI in ts/index.ts to replace '--log-file' with '--logfile' flag - Enhance TsTestLogger to support file logging, clean ANSI sequences, and improved JSON output - Forward TAP protocol logs to testConsoleOutput in TapParser for better console distinction ## 2025-05-15 - 1.2.0 - feat(logging) Improve logging output, CLI option parsing, and test report formatting. - Added a centralized TsTestLogger with support for multiple verbosity levels, JSON output, and file logging (TODO). - Integrated new logger into CLI parsing, TapParser, TapCombinator, and TsTest classes to ensure consistent and structured output. - Introduced new CLI options (--quiet, --verbose, --no-color, --json, --log-file) for enhanced user control. - Enhanced visual design with progress indicators, detailed error aggregation, and performance summaries. - Updated documentation and logging code to align with improved CI/CD behavior, including skipping non-CI tests. ## 2025-05-15 - 1.1.0 - feat(cli) Enhance test discovery with support for single file and glob pattern execution using improved CLI argument detection - Detect execution mode (file, glob, directory) based on CLI input in ts/index.ts - Refactor TestDirectory to load test files using SmartFile for single file and glob patterns - Update TsTest to pass execution mode and adjust test discovery accordingly - Bump dependency versions for typedserver, tsbundle, tapbundle, and others - Add .claude/settings.local.json for updated permissions configuration ## 2025-01-23 - 1.0.96 - fix(TsTest) Fixed improper type-check for promise-like testModule defaults - Corrected the type-check for promise-like default exports in test modules - Removed unnecessary setTimeout used for async execution ## 2025-01-23 - 1.0.95 - fix(core) Fix delay handling in Chrome test execution - Replaced smartdelay.delayFor with native Promise-based delay mechanism in runInChrome method. ## 2025-01-23 - 1.0.94 - fix(TsTest) Fix test module execution by ensuring promise resolution delay - Added a delay to ensure promise resolution when dynamically importing test modules in the runInChrome method. ## 2025-01-23 - 1.0.93 - fix(tstest) Handle globalThis.tapPromise in browser runtime evaluation - Added support for using globalThis.tapPromise in the browser evaluation logic. - Added log messages to indicate the usage of globalThis.tapPromise. ## 2025-01-23 - 1.0.92 - fix(core) Improve error logging for test modules without default promise - Added logging to display the exported test module content when it does not export a default promise. ## 2025-01-23 - 1.0.91 - fix(core) Refactored tstest class to enhance promise handling for test modules. - Removed .gitlab-ci.yml configuration file. - Updated package.json dependency versions. - Added a condition to handle promiselike objects in tests. ## 2024-04-18 - 1.0.89 to 1.0.90 - Enhancements and Bug Fixes Multiple updates and fixes have been made. - Updated core components to enhance stability and performance. ## 2024-03-07 - 1.0.86 to 1.0.88 - Core Updates Continued improvements and updates in the core module. - Applied critical fixes to enhance core stability. ## 2024-01-19 - 1.0.85 to 1.0.89 - Bug Fixes Series of core updates have been implemented. - Addressed known bugs and improved overall system functionality. ## 2023-11-09 - 1.0.81 to 1.0.84 - Maintenance Updates Maintenance updates focusing on core reliability. - Improved core module through systematic updates. - Strengthened system robustness. ## 2023-08-26 - 1.0.77 to 1.0.80 - Critical Fixes Critical fixes implemented in core functionality. - Enhanced core processing to fix existing issues. ## 2023-07-13 - 1.0.75 to 1.0.76 - Stability Improvements Stability enhancements and minor improvements. - Focused on ensuring a stable operational core. ## 2022-11-08 - 1.0.73 to 1.0.74 - Routine Fixes Routine core fixes to address reported issues. - Addressed minor issues in the core module. ## 2022-08-03 - 1.0.71 to 1.0.72 - Core Enhancements Enhancements applied to core systems. - Tweaked core components for enhanced reliability. ## 2022-05-04 - 1.0.69 to 1.0.70 - System Reliability Fixes Fixes targeting the reliability of the core systems. - Improved system reliability through targeted core updates. ## 2022-03-17 - 1.0.65 to 1.0.68 - Major Core Updates Major updates and bug fixes delivered for core components. - Enhanced central operations through key updates. ## 2022-02-15 - 1.0.60 to 1.0.64 - Core Stability Improvements Focused updates on core stability and performance. - Reinforced stability through systematic core changes. ## 2021-11-07 - 1.0.54 to 1.0.59 - Core Fixes and Improvements Multiple core updates aimed at fixing and improving the system. - Addressed outstanding bugs and improved performance in the core. ## 2021-08-20 - 1.0.50 to 1.0.53 - Core Functionality Updates Continued updates to improve core functionality and user experience. - Implemented essential core fixes to enhance user experience. ## 2020-10-01 - 1.0.44 to 1.0.49 - Core System Enhancements Critical enhancements to core systems. - Improved core operations and tackled existing issues. ## 2020-09-29 - 1.0.40 to 1.0.43 - Essential Fixes Series of essential fixes for the core system. - Rectified known issues and bolstered core functionalities. ## 2020-07-10 - 1.0.35 to 1.0.39 - Core Function Fixes Focused improvements and fixes for critical components. - Addressed critical core functions to boost system performance. ## 2020-06-01 - 1.0.31 to 1.0.34 - Core Updates Updates to maintain core functionality efficacy. - Fixed inefficiencies and updated essential components. ## 2019-10-02 - 1.0.26 to 1.0.29 - Core Maintenance Regular maintenance and updates for core reliability. - Addressed multiple core issues and enhanced system stability. ## 2019-05-28 - 1.0.20 to 1.0.25 - Core Improvements General improvements targeting core functionalities. - Made systematic improvements to core processes. ## 2019-04-08 - 1.0.16 to 1.0.19 - Bug Squashing Resolved numerous issues within core operations. - Fixed and optimized core functionalities for better performance. ## 2018-12-06 - 1.0.15 - Dependency Updates Updates aimed at improving dependency management. - Ensured dependencies are up-to-date for optimal performance. ## 2018-08-14 - 1.0.14 - Test Improvement Major improvements in testing mechanisms and logging. - Improved test results handling for accuracy and reliability. - Enhanced logging features for increased clarity. ## 2018-08-04 - 1.0.1 to 1.0.13 - Initial Implementation and Fixes Initial release and critical updates focusing on core stability and functionality. - Implemented core components and established initial system structure. - Addressed key bugs and enhanced initial functionality.