Skip to content

Releases: Vladimir-Urik/OxMgr

v0.5.0

Choose a tag to compare

@Vladimir-Urik Vladimir-Urik released this 09 Jul 00:19

v0.5.0 - 2026-07-09

Added

  • Added a Unix domain socket event bus (events.sock) so external tools can subscribe to real-time process lifecycle, log, and health events without polling the HTTP API.
  • Added BusEvent — a tagged NDJSON enum covering process:started, process:online, process:stopped, process:restarting, process:errored, process:crashed, process:exited, log:out, log:err, health:healthy, health:unhealthy, and daemon:shutdown.
  • Added --json flag to oxmgr list (alias oxmgr ls) that serializes the managed-process list to a JSON array via serde, instead of the human-readable table. Empty lists emit []. Each entry reflects the full ManagedProcess schema (id, name, command, args, status, pid, cpu_percent, memory_bytes, restart_count, cluster_mode, health_status, etc.). Useful for scripting and piping to tools like jq. Thanks to @kvndrsslr for their first contribution in #66.
  • Added oxmgr events CLI command to stream events from the daemon socket, with --filter/-f glob patterns, --process/-p name filter, and --json raw output flag.
  • Added EventFilter subscription protocol: client sends one JSON filter object within 500 ms of connecting, then receives a stream of matching NDJSON events.
  • Unified stdout/stderr log forwarding into a single generic forward_log_pipe function; log lines are now always piped and emitted as log:out/log:err events regardless of log_date_format.
  • Added prepare_log_files helper that handles log rotation and cleanup without keeping file handles open.
  • Enriched exit/crash events with signal (POSIX signal name, e.g. "SIGSEGV"), uptime_secs (how long the process ran), and stderr_tail (last ≤30 stderr lines — captures stack traces, panics, and tracebacks for any language).
  • Extended process object in all bus events with command (full command line) and cwd (working directory).
  • Added per-app [apps.logs] table in oxfile.toml (mirrored on [defaults.logs]) with stdout, stderr, and combined fields to customize log file destinations. Relative paths resolve against the oxfile directory and support ~/$VAR expansion; when unset the daemon keeps its previous default of <log_dir>/<name>.out.log / <name>.err.log (or <name>.log with unified_logs = true).
  • PM2 ecosystem importer now recognises out_file, error_file, and log_file and maps them to the same stdout/stderr override pipeline.

Fixed

  • Relative cwd values in oxfile.toml and PM2 ecosystem files are now resolved against the directory containing the config file, instead of the daemon's working directory. Absolute cwd values are unaffected.
  • ~, ~/..., $VAR, and ${VAR} are now expanded in env values and cwd paths when loading oxfile.toml or PM2 ecosystem files. $$ produces a literal $. Missing variables fail loudly with an error naming the variable rather than silently expanding to an empty string.
  • oxmgr stop/restart/delete/start/reload with a bare process name no longer fail with config target is not a file when a file or directory of the same name exists in the current directory. Lifecycle targets are now treated as config files only when they carry a config extension (toml/js/cjs/mjs/json) or a path separator; bare tokens are always resolved as process names/ids (#58).
  • npm installer now extracts release archives with tar (bsdtar ships in Windows 10/11 and on macOS/Linux) instead of shelling out to PowerShell's Expand-Archive, fixing npm install -g oxmgr failures on PowerShell 7 caused by Microsoft.PowerShell.Archive module autoload errors. A PowerShell fallback (with an explicit Import-Module) is kept for older Windows without tar (#50).
  • npm installer now selects the static musl binary on Linux systems whose glibc is older than the version required by the prebuilt gnu build (e.g. Debian 12, Ubuntu 22.04), instead of installing a gnu binary that fails to load with GLIBC_x.yy not found.
  • Fixed Windows build failures under cargo clippy -- -D warnings by gating the Unix-only event-bus imports and subscription-filter code so they no longer trip unused_imports/dead_code on non-Unix targets.

Changed

  • AppConfig gains an event_socket_path field (default: {base_dir}/events.sock).
  • Daemon startup now spawns the event socket listener alongside the existing HTTP API and IPC listeners.
  • Both daemon shutdown paths (SIGTERM/SIGINT and IPC stop) emit a daemon:shutdown event before closing the socket.

Security

  • Updated SECURITY.md supported-version table: added 0.5.x as a supported release line and dropped 0.3.x from active support.

Dependencies

New Contributors

What's Changed

  • chore(deps): bump tokio from 1.52.1 to 1.52.2 by @dependabot[bot] in #46
  • chore(deps): bump sysinfo from 0.38.4 to 0.39.0 by @dependabot[bot] in #45
  • chore(deps): bump sysinfo from 0.39.0 to 0.39.2 by @dependabot[bot] in #55
  • chore(deps): bump nix from 0.31.2 to 0.31.3 by @dependabot[bot] in #54
  • chore(deps): bump tokio from 1.52.2 to 1.52.3 by @dependabot[bot] in #52
  • chore(deps): bump regex from 1.12.3 to 1.12.4 by @dependabot[bot] in #62
  • chore(deps): bump sysinfo from 0.39.2 to 0.39.3 by @dependabot[bot] in #61
  • chore(deps): bump serial_test from 3.4.0 to 3.5.0 by @dependabot[bot] in #59
  • chore(deps): bump serde_json from 1.0.149 to 1.0.150 by @dependabot[bot] in #57
  • chore(deps): bump chrono from 0.4.44 to 0.4.45 by @dependabot[bot] in #60
  • feat(cli): add oxmgr ls --json to emit process list as JSON array by @kvndrsslr in #66
  • chore(deps): bump anyhow from 1.0.102 to 1.0.103 by @dependabot[bot] in #68
  • chore(deps): bump sysinfo from 0.39.3 to 0.39.5 by @dependabot[bot] in #67

New Contributors

Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@Vladimir-Urik Vladimir-Urik released this 26 Apr 07:04
f13313b

v0.4.0 - 2026-04-26

Added

  • Added oxmgr restart all to restart every managed process in a single command (#31).
  • Added config-file targets for oxmgr stop, oxmgr restart, and oxmgr delete, so commands like oxmgr stop ./oxfile.toml resolve all named apps from an oxfile.toml or PM2 ecosystem file and apply the lifecycle action to each expanded process (#31).
  • Added multi-file oxmgr apply <config>... and oxmgr validate <config>..., combining independently resolved config files in CLI argument order while still rejecting duplicate expanded process names (#31).
  • Added Linux musl release artifacts for x86_64 and aarch64 to improve compatibility on older glibc-based distributions (#32).

Changed

  • Reused shared deterministic config-expansion logic across lifecycle commands, apply, and foreground runtime to keep instance naming behavior aligned.
  • Updated CLI and usage docs to document restart all and config-file lifecycle targets.
  • Updated Linux distribution channels so npm auto-detects glibc vs musl, APT packages ship the musl binary, and oxmgr-bin on AUR consumes the musl release artifact (#32).

Security

  • Updated SECURITY.md supported-version guidance.

Dependencies

  • Bumped clap from 4.6.0 to 4.6.1.
  • Bumped tokio from 1.51.1 to 1.52.1.

What's Changed

  • chore(deps): bump clap from 4.6.0 to 4.6.1 by @dependabot[bot] in #35
  • chore(deps): bump tokio from 1.51.1 to 1.52.1 by @dependabot[bot] in #34

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@Vladimir-Urik Vladimir-Urik released this 19 Apr 00:26
2a2331b

v0.3.0 - 2026-04-19

Added

  • Added oxmgr stop all to stop every managed process in a single command (#28).
  • Added oxmgr delete all (alias: oxmgr rm all) to terminate and remove every managed process in a single command (#28).
  • Updated docs (docs/CLI.md, docs/USAGE.md) to document the new bulk stop/delete behaviour.
  • Added oxmgr logs all (alias: oxmgr log all) to print recent logs for every managed process at once (#30).
  • Running oxmgr logs without a target now prints usage help instead of an error (#30).
  • Reserved all as a forbidden process name to avoid conflicts with bulk commands.

What's Changed

  • chore(deps): bump tokio from 1.50.0 to 1.51.1 by @dependabot[bot] in #29

Full Changelog: v0.2.0...v0.3.0

v0.2.0

Choose a tag to compare

@Vladimir-Urik Vladimir-Urik released this 05 Apr 22:48

This release focuses on Docker/Kubernetes-first runtime workflows, unified logging, and PM2 foreground parity improvements.

Added

  • Added new foreground command: oxmgr runtime <config> [--env <profile>] [--only a,b] (pm2-runtime style).
  • Added daemon-less runtime execution mode that keeps oxmgr in foreground as PID 1 process manager.
  • Added runtime signal handling (SIGTERM/SIGINT) with graceful child shutdown behavior.
  • Added runtime child log forwarding to parent stdout/stderr for native container log collection.
  • Added runtime restart supervision in foreground mode, including restart_policy, max_restarts, crash_restart_limit, and restart_delay_secs.
  • Added runtime support for both Oxmgr native config (oxfile.toml) and PM2 ecosystem files (ecosystem.config.{js,cjs,mjs,json}).
  • Added PM2 merge_logs compatibility mapping to Oxmgr unified_logs.
  • Added unified_logs support across Oxfile defaults/apps/profiles, schema validation, parser/writer flow, process fingerprints, and runtime process specs.
  • Added runtime documentation page: docs/RUNTIME.md.
  • Added dedicated runtime unit coverage (src/commands/runtime.rs) for expansion/restart/spawn behavior and PM2 merge_logs mapping.
  • Added CLI parsing coverage for the new runtime command.
  • Added CLI log-view deduplication coverage for unified log-path mode.

Changed

  • Updated log-path resolution so unified mode writes both stdout/stderr into a single <name>.log stream.
  • Updated oxmgr logs behavior to avoid duplicate sections and duplicate follow output when unified logs are enabled.
  • Updated TUI log viewer and tail preview logic to treat identical stdout/stderr paths as one unified source.
  • Updated command dispatch to run runtime without daemon auto-start.
  • Updated docs (README.md, docs/CLI.md, docs/USAGE.md, docs/install.md, docs/README.md, docs/OXFILE.md, docs/OXFILE_VS_PM2.md) for runtime mode and unified logs.

Testing

  • Extended full test coverage for runtime mode and unified logs.
  • Full suite remains green after changes (cargo test).

Full Changelog: v0.1.9...v0.2.0

v0.1.9

Choose a tag to compare

@Vladimir-Urik Vladimir-Urik released this 05 Apr 21:51

v0.1.9 - 2026-04-05

This release focuses on PM2 migration parity (log_date_format, cron_restart), runtime compatibility updates after dependency bumps, and documentation refreshes.

Added

  • Added log_date_format support across CLI start flags, Oxfile/ecosystem parsing, import/export bundles, and runtime process specs (#21).
  • Added cron_restart support with cron-expression parsing, persisted next-run scheduling, and daemon-managed scheduled restarts (#21).
  • Added dedicated cron restart unit coverage in process_manager tests.
  • Added a shared SHA-256 hex utility (src/hash.rs) and migrated hashing call sites to it for compatibility with sha2 0.11.
  • Added AI Skill reference documentation (docs/SKILL.md).

Changed

  • Updated daemon log forwarding paths so timestamp-prefixed log output and cwd/env marker handling stay consistent in E2E coverage.
  • Updated PM2 migration docs and core user docs for log_date_format and cron_restart.
  • Refreshed benchmark artifacts (BENCHMARK.md, benchmark.json).

Dependencies

  • Bumped clap from 4.5.60 to 4.6.0.
  • Bumped tracing-subscriber from 0.3.22 to 0.3.23.
  • Bumped toml from 1.0.6+spec-1.1.0 to 1.1.0+spec-1.1.0 (via 1.0.7+spec-1.1.0).
  • Bumped toml from 1.1.0+spec-1.1.0 to 1.1.2+spec-1.1.0.
  • Bumped cron from 0.12.1 to 0.16.0.
  • Bumped sha2 from 0.10.9 to 0.11.0.

What's Changed

  • chore(deps): bump sha2 from 0.10.9 to 0.11.0 by @dependabot[bot] in #25
  • chore(deps): bump cron from 0.12.1 to 0.16.0 by @dependabot[bot] in #24
  • chore(deps): bump toml from 1.0.7+spec-1.1.0 to 1.1.0+spec-1.1.0 by @dependabot[bot] in #23
  • chore(deps): bump toml from 1.1.0+spec-1.1.0 to 1.1.2+spec-1.1.0 by @dependabot[bot] in #27

Full Changelog: v0.0.11...v0.1.9

v0.1.8

Choose a tag to compare

@Vladimir-Urik Vladimir-Urik released this 15 Mar 13:25

v0.1.8

This release focuses on adding native Linux ARM64 support across the entire packaging and distribution ecosystem, alongside minor dependency updates.

Added

  • Added aarch64-unknown-linux-gnu (Linux ARM64) build target to the GitHub release workflow.
  • Added arm64 Debian (.deb) package generation and APT repository publishing.
  • Added Linux ARM64 support to the npm wrapper installation script (oxmgr).
  • Added Linux ARM64 support to the Homebrew formula.
  • Added aarch64 target metadata to the AUR package (oxmgr-bin).
  • Added Linux ARM64 tracking to the download metrics dashboard.

Dependencies

  • Bumped sysinfo from 0.38.3 to 0.38.4.
  • Bumped toml from 1.0.4+spec-1.1.0 to 1.0.6+spec-1.1.0.

What's Changed

  • Bump sysinfo from 0.38.3 to 0.38.4 by @dependabot[bot] in #13
  • Bump toml from 1.0.4+spec-1.1.0 to 1.0.6+spec-1.1.0 by @dependabot[bot] in #14

Full Changelog: v0.1.7...v0.1.8

v0.1.7

Choose a tag to compare

@Vladimir-Urik Vladimir-Urik released this 10 Mar 10:45

v0.1.7

This release focuses on reload-time build hooks and best-effort reuse-port support for zero-downtime reloads.

Added

  • Added pre_reload_cmd in oxfile.toml, ecosystem imports, bundles, and CLI --pre-reload-cmd to run a build/script before reload attempts.
  • Added reuse_port in oxfile.toml and CLI --reuse-port as a best-effort hint for SO_REUSEPORT on macOS/Linux (ignored on Windows).
  • Added Reuse Port field to oxmgr status output.
  • Added schema and documentation updates for the new fields.

Changed

  • Reload now runs pre_reload_cmd (when configured) before spawning a replacement process; failures abort the reload and keep the existing process running.

Testing

  • Added end-to-end coverage for --reuse-port (non-Windows) and --pre-reload-cmd (Windows and non-Windows).

Full Changelog: v0.1.6...v0.1.7

v0.1.6

Choose a tag to compare

@Vladimir-Urik Vladimir-Urik released this 07 Mar 20:40

v0.1.6 - 2026-03-07

This release focuses on Arch Linux distribution support and release automation for the AUR package.

Added

  • Added AUR packaging metadata for the new oxmgr-bin package, including PKGBUILD and .SRCINFO.
  • Added helper scripts to generate AUR package metadata from release version and checksum inputs.
  • Added a dedicated publish-aur job to the GitHub release workflow to update the oxmgr-bin AUR repository automatically when release tags are published.
  • Added Arch Linux installation instructions using yay -S oxmgr-bin across the main project docs and npm package README.

Changed

  • Extended release documentation to cover AUR publishing, required repository secrets, and the release-time metadata generation flow.
  • Aligned packaging maintenance with the existing Homebrew, Chocolatey, Scoop, and APT distribution automation patterns.

Notes

  • The AUR package is published as oxmgr-bin, which installs the released Linux binary instead of compiling from source.
  • Final AUR checksums are generated from the tagged GitHub release assets during the release workflow.

Full Changelog: v0.1.5...v0.1.6

v0.1.5

Choose a tag to compare

@Vladimir-Urik Vladimir-Urik released this 06 Mar 20:39

v0.1.5 - 2026-03-06

This release focuses on stronger diagnostics, better Oxfile editor tooling, a more usable terminal UI, and internal maintenance improvements.

Added

  • Expanded oxmgr doctor with checks for API address resolution, /metrics reachability, service-manager installation/runtime state, cgroup prerequisites, git pull/webhook setup, and log-rotation policy.
  • Added live search to oxmgr ui, with filtering by process name, namespace, and command.
  • Added status filters and sortable process lists in the TUI (all, running, stopped, unhealthy; sort by ID, name, CPU, RAM, or restarts).
  • Added a shipped JSON Schema for oxfile.toml plus Taplo schema association for editor completion and validation.
  • Added packaging smoke checks in CI for the npm wrapper, Homebrew formula generation, and Scoop manifest generation.

Changed

  • Refactored large runtime and UI modules into smaller internal components, including process_manager, TUI rendering/layout helpers, daemon HTTP handling, ecosystem profile/resource parsing, and process fingerprinting.
  • Consolidated shared process-spec handling across start and apply flows to reduce drift between CLI and config-driven workflows.
  • Reorganized unit tests for large modules into dedicated per-module test directories to keep runtime code easier to review and maintain.
  • Updated the README and docs to cover the richer doctor output, Oxfile schema support, and the new TUI search/filter/sort controls.

Fixed

  • Fixed Windows clippy/CI failures around private-directory and file-permission helpers by separating Unix and non-Unix implementations.
  • Improved CI coverage by enforcing cargo clippy and packaging smoke checks alongside formatting, build, and test steps.
  • Improved TUI empty-state behavior so active search/filter views show a clear “no services match” message instead of a misleading blank table.

Testing

  • Added and reorganized unit coverage for TUI state/render behavior, doctor probes, process-manager lifecycle helpers, and packaging checks.
  • Kept end-to-end coverage green for the updated diagnostics, config, and TUI workflows.

Full Changelog: v0.1.4...v0.1.5

v0.1.4

Choose a tag to compare

@Vladimir-Urik Vladimir-Urik released this 05 Mar 23:15
acbaa78

v0.1.4

  • This release focuses on Windows distribution improvements (Scoop), dependency updates, and refreshed benchmark snapshots since v0.1.3.

Added

  • Added Scoop distribution support in release automation with a dedicated publish-scoop job.
  • Added scripts/generate_scoop_manifest.sh to generate the Scoop manifest (oxmgr.json) from release metadata and checksums.
  • Added Scoop installation instructions to user docs (README.md and docs/install.md).

Changed

  • Updated release automation docs to include Scoop publishing details and required secrets (SCOOP_BUCKET_TOKEN, SCOOP_BUCKET_REPO).
  • Improved release workflow packaging coverage by validating and publishing Windows Scoop manifest data from release artifacts.
  • Maintained the official Scoop bucket target as empellio/scoop-bucket.

Dependencies

  • Bumped dirs from 5.0.1 to 6.0.0.
  • Bumped tokio from 1.49.0 to 1.50.0.
  • Bumped sysinfo from 0.38.2 to 0.38.3.
  • Bumped toml from 1.0.3+spec-1.1.0 to 1.0.4+spec-1.1.0.
  • Updated Cargo.lock accordingly.

Notes

  • No core runtime/process-manager behavior changes were introduced in this release; changes are focused on packaging, distribution, documentation, and dependency refreshes.

What's Changed

Full Changelog: v0.1.3...v0.1.4