# Changelog ## 2025-08-28 - 3.0.0 - BREAKING CHANGE(daemon) Refactor daemon and service management: remove IPC auto-spawn, add TspmServiceManager, tighten IPC/client/CLI behavior and tests - Remove automatic daemon spawn from the IPC client — clients now error with guidance and require the daemon to be started manually or enabled as a system service - Add TspmServiceManager to manage the daemon as a systemd service (enable/disable/reload/status) - Update IPC server/client to use SmartIpc.createServer/createClient with heartbeat defaults and explicit onMessage handlers - Daemon publishes per-process logs to topics (logs.) and re-emits ProcessMonitor logs for pub/sub - CLI updated: add enable/disable service commands, adjust daemon start/stop/status workflows and improve user hints when daemon is not running - Add/adjust integration and unit tests to cover daemon lifecycle, IPC client behavior, log streaming, heartbeat and resource reporting - Documentation expanded (README, readme.plan.md, changelog) to reflect the refactor and migration notes - Various code cleanups, formatting fixes and defensive checks across modules ## 2025-08-28 - 2.0.0 - BREAKING CHANGE(daemon) Refactor daemon lifecycle and service management: remove IPC auto-spawn, add TspmServiceManager and CLI enable/disable - Do not auto-spawn the daemon from the IPC client anymore — attempts to connect will now error with instructions to start the daemon manually or enable the system service (breaking change). - Add TspmServiceManager to manage the daemon as a systemd service via smartdaemon (enable/disable/reload/status helpers). - CLI: add 'enable' and 'disable' commands to install/uninstall the daemon as a system service and add 'daemon start-service' entrypoint used by systemd. - CLI: improve error handling and user hints when the daemon is not running (suggests `tspm daemon start` or `tspm enable`). - IPC client: removed startDaemon() and related auto-reconnect/start logic; request() no longer auto-reconnects or implicitly start the daemon. - Export TspmServiceManager from the package index so service management is part of the public API. - Updated development plan/readme (readme.plan.md) to reflect the refactor toward proper SmartDaemon integration and migration notes. ## 2025-08-26 - 1.8.0 - feat(daemon) Add real-time log streaming and pub/sub: daemon publishes per-process logs, IPC client subscribe/unsubscribe, CLI --follow streaming, and sequencing for logs - Upgrade @push.rocks/smartipc dependency to ^2.1.2 - Daemon: initialize SmartIpc server with heartbeat and publish process logs to topic `logs.`; write PID file and start heartbeat monitoring - Tspm: re-emit monitor log events as 'process:log' so daemon can broadcast logs - ProcessWrapper: include seq and runId on IProcessLog entries and maintain nextSeq/runId (adds sequencing to logs); default log buffer size applied - TspmIpcClient: improved connect options (retries, timeouts, heartbeat handling), add subscribe/unsubscribe for real-time logs, and use SmartIpc.waitForServer when starting daemon - CLI: add --follow flag to `logs` command to stream live logs, detect sequence gaps/duplicates, and handle graceful cleanup on Ctrl+C - ProcessMonitor: now extends EventEmitter and re-emits process logs for upstream consumption - Standardized heartbeat and IPC timing defaults (heartbeatInterval: 5000ms, heartbeatTimeout: 20000ms, heartbeatInitialGracePeriodMs: 10000ms) ## 2025-08-25 - 1.7.0 - feat(readme) Add comprehensive README with detailed usage, command reference, daemon management, architecture and development instructions - Expanded README from a short placeholder to a full documentation covering: Quick Start, Installation, Command Reference, Daemon Management, Monitoring & Information, Batch Operations, Architecture, Programmatic Usage, Advanced Features, Development, Debugging, Performance, and Legal information - Included usage examples and CLI command reference for start/stop/restart/delete/list/describe/logs and batch/daemon commands - Added human-friendly memory formatting and examples, process and daemon status outputs, and programmatic TypeScript usage snippet - Improved onboarding instructions: cloning, installing, testing, building, and running the project ## 2025-08-25 - 1.6.1 - fix(daemon) Fix smartipc integration and add daemon/ipc integration tests - Replace direct smartipc server/client construction with SmartIpc.createServer/createClient and set heartbeat: false - Switch IPC handler registration to use onMessage and add explicit Request/Response typing for handlers - Update IPC client to use SmartIpc.createClient and improve daemon start/connect logic - Add comprehensive tests: unit tests for TspmDaemon and TspmIpcClient and full integration tests for daemon lifecycle, process management, error handling, heartbeat and resource reporting ## 2025-08-25 - 1.6.0 - feat(daemon) Add central TSPM daemon and IPC client; refactor CLI to use daemon and improve monitoring/error handling - Add central daemon implementation (ts/classes.daemon.ts) to manage all processes via a single background service and Unix socket. - Introduce IPC client and typed IPC contracts (ts/classes.ipcclient.ts, ts/ipc.types.ts) so CLI communicates with the daemon. - Refactor CLI to use the daemon for commands (ts/cli.ts): start/stop/restart/delete/list/describe/logs/start-all/stop-all/restart-all and new daemon start/stop/status commands. - Enhance process monitoring and wrapping: ProcessMonitor and ProcessWrapper improvements (ts/classes.processmonitor.ts, ts/classes.processwrapper.ts) with better logging, memory checks, and restart behavior. - Improve centralized error handling and Logger behavior (ts/utils.errorhandler.ts). - Persist and load process configurations via TspmConfig and config storage changes (ts/classes.config.ts, ts/classes.tspm.ts). - Bump dependency and devDependency versions and add packageManager entry in package.json. - Add ts/daemon entrypoint and export daemon/ipc types from ts/index.ts; add paths for tspm runtime dir (ts/paths.ts). - Update tests and test tooling imports (test/test.ts) and adjust commitinfo and readme hints. ## 2025-03-10 - 1.5.1 - fix(core) Improve error handling, logging, and test suite; update dependency versions - Updated devDependencies versions in package.json (@git.zone/tsbuild, @push.rocks/tapbundle, and @push.rocks/smartdaemon) - Refactored error handling and enhanced logging in ProcessMonitor and ProcessWrapper modules - Improved test structure by adding clear module import tests and usage examples in test files ## 2025-03-04 - 1.5.0 - feat(cli) Enhance CLI with new process management commands - Added comprehensive CLI commands for process management including start, stop, restart, list, describe and logs. - Implemented memory string parsing for process memory limits. - Enhanced CLI output with formatted table listings for active processes. ## 2025-03-03 - 1.4.0 - feat(core) Introduced process management features using ProcessWrapper and enhanced configuration. - Added ProcessWrapper for wrapping and managing child processes. - Refactored process monitoring logic using ProcessWrapper. - Introduced TspmConfig for configuration handling. - Enhanced CLI to support new process management commands like 'startAsDaemon'. ## 2025-03-01 - 1.3.1 - fix(test) Update test script to fix type references and remove private method call - Corrected type references in test script for IMonitorConfig. - Fixed test script to use console.log instead of private method monitor.log. ## 2025-03-01 - 1.3.0 - feat(cli) Add CLI support with command parsing and version display - Added a basic CLI interface using smartcli. - Implemented command parsing with a 'restart' command. - Integrated project version display in the CLI. ## 2025-03-01 - 1.2.0 - feat(core) Introduce ProcessMonitor with memory management and spawning features - Added ProcessMonitor class with functionality to manage process execution and memory usage. - Implemented process spawning with ability to handle command arguments and directories. - Added periodic memory monitoring and automatic restarts when memory thresholds are exceeded. - ProcessMonitor now logs its actions with optional configuration name for better identification. - Updated test file to include example usage of ProcessMonitor. ## 2025-03-01 - 1.1.1 - fix(package) Update dependencies and pnpm configuration - Updated @types/node to 22.13.8 - Updated pnpm configuration to include onlyBuiltDependencies with esbuild, mongodb-memory-server, and puppeteer ## 2025-03-01 - 1.1.0 - feat(core) Introduce ProcessMonitor class and integrate native and external plugins - Added a new ProcessMonitor class to manage and monitor child processes with memory constraints. - Integrated native 'path' and external '@push.rocks/smartpath' packages in a unified plugins file. - Adjusted index and related files for improved modular structure. ## 2025-02-24 - 1.0.3 - fix(core) Corrected description in package.json and readme.md from 'task manager' to 'process manager'. - Updated the project description in package.json. - Aligned the description in readme.md with package.json. ## 2025-02-24 - 1.0.2 - fix(core) Internal changes with no functional impact. ## 2025-02-24 - 1.0.1 - initial release Initial release with baseline functionality.