StaxSys development and releases
Development requires Node.js 18.15 or newer and a terminal emulator.
git clone https://github.com/StaxDash/staxsys.git
cd staxsys
npm install
npm test
Commands
| Command | Purpose |
|---|---|
npm start |
Run the terminal monitor from source. |
npm test |
Syntax-check the entry point and collector, CLI, and PTY tests. |
npm pack |
Build an npm distribution archive. |
npm run build:bin |
Build a standalone executable for the host platform. |
Tests use Node’s built-in node:test runner. Unit fixtures cover metric
parsers, rate calculations, configuration, history, bars, process filtering,
and platform-specific decoding. CLI tests cover help, version, and invalid
flags. A pseudo-terminal integration test renders the real dashboard, sends
q, and verifies a clean exit and isolated history persistence.
Standalone executable
The binary build:
- bundles application code,
blessed, and required terminal data with esbuild; - asks Node.js to generate a Single Executable Application blob; and
- injects that blob into a copy of the Node executable with
postject.
The build needs an official nodejs.org binary. Some distribution builds remove
the SEA sentinel required for injection. If the build reports that it cannot
find the sentinel, point NODE_BIN at an official Node.js executable.
Output is written under dist/. On macOS the build also applies an ad-hoc
signature.
Continuous integration and releases
The upstream CI matrix runs tests on Linux, macOS, and Windows with Node 18 and
22 and separately exercises binary creation. Release automation reacts to
v* tags, builds platform artifacts and the npm tarball, and creates a GitHub
release. Tags containing a hyphen, such as v1.1.0-rc.1, become prereleases.
The upstream development guide currently says releases are tagged from
master, while CI is described as running on main. Confirm the actual
default release branch before tagging; DocsHub does not resolve that upstream
documentation inconsistency by guessing.
Before a release, update CHANGELOG.md, bump package.json, run the complete
test suite and PTY smoke test, then create the intended semantic-version tag.
Contribution boundaries
- Keep collectors independent from the terminal UI.
- Preserve the
defaults < config file < CLI flagsprecedence. - Keep the runtime dependency footprint small.
- Follow the existing CommonJS style.
- Add fixture-based tests for parsers and pure helpers.
Refer to the upstream development guide for exact packaging implementation details.