Releases: Vladimir-Urik/OxMgr
Release list
v0.5.0
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 coveringprocess:started,process:online,process:stopped,process:restarting,process:errored,process:crashed,process:exited,log:out,log:err,health:healthy,health:unhealthy, anddaemon:shutdown. - Added
--jsonflag tooxmgr list(aliasoxmgr ls) that serializes the managed-process list to a JSON array viaserde, instead of the human-readable table. Empty lists emit[]. Each entry reflects the fullManagedProcessschema (id, name, command, args, status, pid, cpu_percent, memory_bytes, restart_count, cluster_mode, health_status, etc.). Useful for scripting and piping to tools likejq. Thanks to @kvndrsslr for their first contribution in #66. - Added
oxmgr eventsCLI command to stream events from the daemon socket, with--filter/-fglob patterns,--process/-pname filter, and--jsonraw output flag. - Added
EventFiltersubscription 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_pipefunction; log lines are now always piped and emitted aslog:out/log:errevents regardless oflog_date_format. - Added
prepare_log_fileshelper 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), andstderr_tail(last ≤30 stderr lines — captures stack traces, panics, and tracebacks for any language). - Extended
processobject in all bus events withcommand(full command line) andcwd(working directory). - Added per-app
[apps.logs]table inoxfile.toml(mirrored on[defaults.logs]) withstdout,stderr, andcombinedfields to customize log file destinations. Relative paths resolve against the oxfile directory and support~/$VARexpansion; when unset the daemon keeps its previous default of<log_dir>/<name>.out.log/<name>.err.log(or<name>.logwithunified_logs = true). - PM2 ecosystem importer now recognises
out_file,error_file, andlog_fileand maps them to the same stdout/stderr override pipeline.
Fixed
- Relative
cwdvalues inoxfile.tomland PM2 ecosystem files are now resolved against the directory containing the config file, instead of the daemon's working directory. Absolutecwdvalues are unaffected. ~,~/...,$VAR, and${VAR}are now expanded inenvvalues andcwdpaths when loadingoxfile.tomlor 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/reloadwith a bare process name no longer fail withconfig target is not a filewhen 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'sExpand-Archive, fixingnpm install -g oxmgrfailures on PowerShell 7 caused byMicrosoft.PowerShell.Archivemodule autoload errors. A PowerShell fallback (with an explicitImport-Module) is kept for older Windows withouttar(#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 warningsby gating the Unix-only event-bus imports and subscription-filter code so they no longer tripunused_imports/dead_codeon non-Unix targets.
Changed
AppConfiggains anevent_socket_pathfield (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:shutdownevent before closing the socket.
Security
- Updated
SECURITY.mdsupported-version table: added0.5.xas a supported release line and dropped0.3.xfrom active support.
Dependencies
- Bumped
tokiofrom1.52.1to1.52.3(via1.52.2) by @dependabot[bot] in #46 and #52. - Bumped
sysinfofrom0.38.4to0.39.5(via0.39.0,0.39.2,0.39.3) by @dependabot[bot] in #45, #55, #61, and #67. - Bumped
nixfrom0.31.2to0.31.3by @dependabot[bot] in #54. - Bumped
anyhowfrom1.0.102to1.0.103by @dependabot[bot] in #68. - Bumped
chronofrom0.4.44to0.4.45by @dependabot[bot] in #60. - Bumped
serde_jsonfrom1.0.149to1.0.150by @dependabot[bot] in #57. - Bumped
regexfrom1.12.3to1.12.4by @dependabot[bot] in #62. - Bumped
serial_testfrom3.4.0to3.5.0by @dependabot[bot] in #59.
New Contributors
- @kvndrsslr made their first contribution in #66.
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 --jsonto 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
- @kvndrsslr made their first contribution in #66
Full Changelog: v0.4.0...v0.5.0
v0.4.0
v0.4.0 - 2026-04-26
Added
- Added
oxmgr restart allto restart every managed process in a single command (#31). - Added config-file targets for
oxmgr stop,oxmgr restart, andoxmgr delete, so commands likeoxmgr stop ./oxfile.tomlresolve all named apps from anoxfile.tomlor PM2 ecosystem file and apply the lifecycle action to each expanded process (#31). - Added multi-file
oxmgr apply <config>...andoxmgr 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_64andaarch64to improve compatibility on older glibc-based distributions (#32).
Changed
- Reused shared deterministic config-expansion logic across lifecycle commands,
apply, and foregroundruntimeto keep instance naming behavior aligned. - Updated CLI and usage docs to document
restart alland config-file lifecycle targets. - Updated Linux distribution channels so npm auto-detects
glibcvsmusl, APT packages ship the musl binary, andoxmgr-binon AUR consumes the musl release artifact (#32).
Security
- Updated
SECURITY.mdsupported-version guidance.
Dependencies
- Bumped
clapfrom4.6.0to4.6.1. - Bumped
tokiofrom1.51.1to1.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
v0.3.0 - 2026-04-19
Added
- Added
oxmgr stop allto 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 logswithout a target now prints usage help instead of an error (#30). - Reserved
allas 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
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
oxmgrin 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, andrestart_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_logscompatibility mapping to Oxmgrunified_logs. - Added
unified_logssupport 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 PM2merge_logsmapping. - Added CLI parsing coverage for the new
runtimecommand. - 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>.logstream. - Updated
oxmgr logsbehavior 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
runtimewithout 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
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_formatsupport across CLI start flags, Oxfile/ecosystem parsing, import/export bundles, and runtime process specs (#21). - Added
cron_restartsupport with cron-expression parsing, persisted next-run scheduling, and daemon-managed scheduled restarts (#21). - Added dedicated cron restart unit coverage in
process_managertests. - Added a shared SHA-256 hex utility (
src/hash.rs) and migrated hashing call sites to it for compatibility withsha20.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_formatandcron_restart. - Refreshed benchmark artifacts (
BENCHMARK.md,benchmark.json).
Dependencies
- Bumped
clapfrom4.5.60to4.6.0. - Bumped
tracing-subscriberfrom0.3.22to0.3.23. - Bumped
tomlfrom1.0.6+spec-1.1.0to1.1.0+spec-1.1.0(via1.0.7+spec-1.1.0). - Bumped
tomlfrom1.1.0+spec-1.1.0to1.1.2+spec-1.1.0. - Bumped
cronfrom0.12.1to0.16.0. - Bumped
sha2from0.10.9to0.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
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
arm64Debian (.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
aarch64target metadata to the AUR package (oxmgr-bin). - Added Linux ARM64 tracking to the download metrics dashboard.
Dependencies
- Bumped
sysinfofrom0.38.3to0.38.4. - Bumped
tomlfrom1.0.4+spec-1.1.0to1.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
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_cmdinoxfile.toml, ecosystem imports, bundles, and CLI--pre-reload-cmdto run a build/script before reload attempts. - Added
reuse_portinoxfile.tomland CLI--reuse-portas a best-effort hint for SO_REUSEPORT on macOS/Linux (ignored on Windows). - Added
Reuse Portfield tooxmgr statusoutput. - 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
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-binpackage, includingPKGBUILDand.SRCINFO. - Added helper scripts to generate AUR package metadata from release version and checksum inputs.
- Added a dedicated
publish-aurjob to the GitHub release workflow to update theoxmgr-binAUR repository automatically when release tags are published. - Added Arch Linux installation instructions using
yay -S oxmgr-binacross 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
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 doctorwith checks for API address resolution,/metricsreachability, 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.tomlplus 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
startandapplyflows 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
doctoroutput, 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 clippyand 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,
doctorprobes, 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
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-scoopjob. - Added
scripts/generate_scoop_manifest.shto generate the Scoop manifest (oxmgr.json) from release metadata and checksums. - Added Scoop installation instructions to user docs (
README.mdanddocs/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
dirsfrom5.0.1to6.0.0. - Bumped
tokiofrom1.49.0to1.50.0. - Bumped
sysinfofrom0.38.2to0.38.3. - Bumped
tomlfrom1.0.3+spec-1.1.0to1.0.4+spec-1.1.0. - Updated
Cargo.lockaccordingly.
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
- Bump dirs from 5.0.1 to 6.0.0 by @dependabot[bot] in #10
- Bump toml from 1.0.3+spec-1.1.0 to 1.0.4+spec-1.1.0 by @dependabot[bot] in #9
- Bump sysinfo from 0.38.2 to 0.38.3 by @dependabot[bot] in #8
- Bump tokio from 1.49.0 to 1.50.0 by @dependabot[bot] in #7
Full Changelog: v0.1.3...v0.1.4