• mmon 0.10.1
    Build & Publish / create-release (push) Successful in 6s
    Build & Publish / build-linux-deb (amd64) (push) Successful in 46s
    Build & Publish / build-linux-deb (arm64) (push) Successful in 31s
    Build & Publish / build-linux-deb (armhf) (push) Successful in 25s
    Build & Publish / build-linux-deb (i386) (push) Successful in 32s
    Build & Publish / build-windows (push) Successful in 37s
    Build & Publish / publish (push) Successful in 14s
    Stable

    MatCat released this 2026-08-09 18:37:37 -04:00 | 0 commits to main since this release

    [0.10.1] - 2026-08-08

    Added

    • Memory bar segments like htop: used (gradient), kernel buffers
      (mem_buf), and page cache (mem_cache), so reclaimable cache is visible
      separately from real usage. The two new roles are themeable (defaults blue /
      yellow) and were added to all 12 built-in themes; existing theme files on
      disk are migrated automatically (new roles appended, version marker
      refreshed) without clobbering user edits.

    Fixed

    • Push command replies through h2c/keep-alive servers: the DataPusher now
      reads chunked (Transfer-Encoding: chunked) HTTP responses and de-chunks
      them, instead of waiting for the connection to close. Commands from servers
      behind Apache's h2c-upgrade (or any chunked/keep-alive proxy) now execute
      instead of being silently dropped. The same response framing handling was
      applied to the remote poller.
    • Settings file no longer wipes hand-added keys: saveConfig preserved
      only its own keys and dropped everything else, so a push_token (or any
      threshold/custom key) added by hand vanished on exit — leaving push
      configured without a token, which made mmon refuse to start. It now
      preserves unmanaged lines verbatim, and empty remote/push values are no
      longer written, so no stray remote = line appears. The TUI also warns
      ("push disabled: …") instead of exiting if push can't start.
    Downloads
  • mmon dev 0.10.1 (d7fc596)
    Build & Publish / create-release (push) Successful in 10s
    Build & Publish / build-linux-deb (amd64) (push) Successful in 1m34s
    Build & Publish / build-linux-deb (arm64) (push) Successful in 1m42s
    Build & Publish / build-linux-deb (armhf) (push) Successful in 1m44s
    Build & Publish / build-linux-deb (i386) (push) Successful in 1m43s
    Build & Publish / build-windows (push) Successful in 2m47s
    Build & Publish / publish (push) Successful in 10s
    Pre-Release

    gitea-actions released this 2026-08-09 17:52:49 -04:00 | 4 commits to main since this release

    [0.10.1] - 2026-08-08

    Added

    • Memory bar segments like htop: used (gradient), kernel buffers
      (mem_buf), and page cache (mem_cache), so reclaimable cache is visible
      separately from real usage. The two new roles are themeable (defaults blue /
      yellow) and were added to all 12 built-in themes; existing theme files on
      disk are migrated automatically (new roles appended, version marker
      refreshed) without clobbering user edits.

    Fixed

    • Push command replies through h2c/keep-alive servers: the DataPusher now
      reads chunked (Transfer-Encoding: chunked) HTTP responses and de-chunks
      them, instead of waiting for the connection to close. Commands from servers
      behind Apache's h2c-upgrade (or any chunked/keep-alive proxy) now execute
      instead of being silently dropped. The same response framing handling was
      applied to the remote poller.
    • Settings file no longer wipes hand-added keys: saveConfig preserved
      only its own keys and dropped everything else, so a push_token (or any
      threshold/custom key) added by hand vanished on exit — leaving push
      configured without a token, which made mmon refuse to start. It now
      preserves unmanaged lines verbatim, and empty remote/push values are no
      longer written, so no stray remote = line appears. The TUI also warns
      ("push disabled: …") instead of exiting if push can't start.
    Downloads
  • mmon dev 0.10.0 (e5c7e7f)
    Build & Publish / create-release (push) Successful in 6s
    Build & Publish / build-linux-deb (amd64) (push) Successful in 18s
    Build & Publish / build-linux-deb (arm64) (push) Successful in 20s
    Build & Publish / build-linux-deb (armhf) (push) Successful in 21s
    Build & Publish / build-linux-deb (i386) (push) Successful in 18s
    Build & Publish / build-windows (push) Successful in 32s
    Build & Publish / publish (push) Successful in 10s
    Pre-Release

    gitea-actions released this 2026-08-09 01:30:05 -04:00 | 7 commits to main since this release

    [0.10.0] - 2026-08-07

    Added

    • JSON API server: mmon can expose its live metrics as JSON over HTTP
      (--listen PORT, --serve, or serve/serve_port/serve_bind in the
      settings file; default port 7331). Runs from the TUI or headless
      (--headless) so a dedicated server can publish in the background. The
      response is a complete snapshot of the machine: CPU (aggregate, per-core,
      groups), memory, load, processes, sensors, network interfaces (rates +
      cumulative), the disk tree with partitions/mounts, ZFS pools, filesystems
      and GPUs.
    • Gzip output: GET /gz (or /api/gz) returns the same snapshot
      gzip-compressed with Content-Encoding: gzip (requires zlib at build
      time). The remote client auto-detects gzip — from the Content-Encoding
      header or the gzip magic bytes — and decompresses transparently, so it
      works against mmon, proxies, or any server regardless of encoding.
    • Encrypted data-frame push: --push URL (or push in the settings
      file) POSTs the snapshot to a URL every push_interval seconds (default:
      the -i sample interval, 0.25) as a gzip-compressed JSON blob sealed with
      ChaCha20-Poly1305 keyed by
      SHA-256(token) (token never sent on the wire — decryption is the
      authentication). mmon's HTTP server also accepts pushed frames on
      POST /push (and /ingest, /), so A can push → B relays → C views.
      See SERVER.md for the full wire and command protocol.
    • Remote command channel: the push reply may carry an encrypted command
      list that mmon executes exactly as if the keys were pressed in the TUI —
      focus, scroll, expand/collapse, resize, reorder,
      reset_order, theme (next|name), connect, disconnect, serve,
      quit, and a raw key escape hatch for full TUI parity.
    • Self-test: mmon --selftest verifies the crypto (RFC 8439 §2.8.2),
      gzip and the JSON snapshot round-trip.
    • Token generation: mmon --gen-token prints a random 32-character
      base64 token (24 CSPRNG bytes) for serve_token/remote_token/
      push_token; with --write-config it is saved into the settings file as
      serve_token (inserting or replacing the line) so no external tooling is
      needed.
    • Remote monitoring: mmon --remote HOST[:PORT] (or remote in the
      settings file, or the c key) replaces the local panels with a remote
      mmon's data; the header shows the remote hostname and the footer shows the
      connection. Disconnect with d (or clear remote).
    • Bearer-token auth (optional): --token TOKEN, or
      serve_token/remote_token in the settings file. The server rejects
      requests without a matching Authorization: Bearer <token> header (401);
      tokens are never written back to the settings file.
    • In-program control: c connects to a remote (prompts for host:port),
      d disconnects, s toggles the API server and prompts for the serve port
      and bind address. Connecting at runtime is session-only and never written
      back to the settings file — plain mmon stays local unless a remote
      line is configured. While a remote is down or before its first snapshot
      arrives, the UI shows the target host and a "waiting for data" status
      instead of empty panels.
    • Headless daemon: mmon --headless --serve collects and serves without
      a TUI; combined with --remote it relays another instance's data.
    Downloads
  • mmon 0.10.0
    Build & Publish / create-release (push) Successful in 5s
    Build & Publish / build-linux-deb (amd64) (push) Successful in 29s
    Build & Publish / build-linux-deb (arm64) (push) Successful in 24s
    Build & Publish / build-linux-deb (armhf) (push) Successful in 27s
    Build & Publish / build-linux-deb (i386) (push) Successful in 29s
    Build & Publish / build-windows (push) Successful in 36s
    Build & Publish / publish (push) Successful in 14s
    Stable

    MatCat released this 2026-08-09 01:28:07 -04:00 | 6 commits to main since this release

    [0.10.0] - 2026-08-07

    Added

    • JSON API server: mmon can expose its live metrics as JSON over HTTP
      (--listen PORT, --serve, or serve/serve_port/serve_bind in the
      settings file; default port 7331). Runs from the TUI or headless
      (--headless) so a dedicated server can publish in the background. The
      response is a complete snapshot of the machine: CPU (aggregate, per-core,
      groups), memory, load, processes, sensors, network interfaces (rates +
      cumulative), the disk tree with partitions/mounts, ZFS pools, filesystems
      and GPUs.
    • Gzip output: GET /gz (or /api/gz) returns the same snapshot
      gzip-compressed with Content-Encoding: gzip (requires zlib at build
      time). The remote client auto-detects gzip — from the Content-Encoding
      header or the gzip magic bytes — and decompresses transparently, so it
      works against mmon, proxies, or any server regardless of encoding.
    • Encrypted data-frame push: --push URL (or push in the settings
      file) POSTs the snapshot to a URL every push_interval seconds (default:
      the -i sample interval, 0.25) as a gzip-compressed JSON blob sealed with
      ChaCha20-Poly1305 keyed by
      SHA-256(token) (token never sent on the wire — decryption is the
      authentication). mmon's HTTP server also accepts pushed frames on
      POST /push (and /ingest, /), so A can push → B relays → C views.
      See SERVER.md for the full wire and command protocol.
    • Remote command channel: the push reply may carry an encrypted command
      list that mmon executes exactly as if the keys were pressed in the TUI —
      focus, scroll, expand/collapse, resize, reorder,
      reset_order, theme (next|name), connect, disconnect, serve,
      quit, and a raw key escape hatch for full TUI parity.
    • Self-test: mmon --selftest verifies the crypto (RFC 8439 §2.8.2),
      gzip and the JSON snapshot round-trip.
    • Token generation: mmon --gen-token prints a random 32-character
      base64 token (24 CSPRNG bytes) for serve_token/remote_token/
      push_token; with --write-config it is saved into the settings file as
      serve_token (inserting or replacing the line) so no external tooling is
      needed.
    • Remote monitoring: mmon --remote HOST[:PORT] (or remote in the
      settings file, or the c key) replaces the local panels with a remote
      mmon's data; the header shows the remote hostname and the footer shows the
      connection. Disconnect with d (or clear remote).
    • Bearer-token auth (optional): --token TOKEN, or
      serve_token/remote_token in the settings file. The server rejects
      requests without a matching Authorization: Bearer <token> header (401);
      tokens are never written back to the settings file.
    • In-program control: c connects to a remote (prompts for host:port),
      d disconnects, s toggles the API server and prompts for the serve port
      and bind address. Connecting at runtime is session-only and never written
      back to the settings file — plain mmon stays local unless a remote
      line is configured. While a remote is down or before its first snapshot
      arrives, the UI shows the target host and a "waiting for data" status
      instead of empty panels.
    • Headless daemon: mmon --headless --serve collects and serves without
      a TUI; combined with --remote it relays another instance's data.
    Downloads
  • v0.9.4 380ecf7cbe

    mmon 0.9.4
    Build & Publish / create-release (push) Failing after 5s
    Build & Publish / build-linux-deb (amd64) (push) Skipped
    Build & Publish / build-linux-deb (arm64) (push) Skipped
    Build & Publish / build-linux-deb (armhf) (push) Skipped
    Build & Publish / build-linux-deb (i386) (push) Skipped
    Build & Publish / build-windows (push) Skipped
    Build & Publish / publish (push) Skipped
    Stable

    MatCat released this 2026-08-06 23:04:45 -04:00 | 25 commits to main since this release

    [0.9.4] - 2026-08-05

    Added

    • Reorder items: PgUp/PgDn move the selected item up/down in the Disk
      (drives) and Network (interfaces) panels. A partition row moves its whole
      drive. The order is persisted in the settings file (disk_order /
      net_order) and reapplied on the next run; r resets the focused panel's
      order back to automatic (natural drive order, traffic-sorted interfaces).
      Selection stays on the moved item, and once a net interface is reordered the
      manual order replaces the traffic sort.
    Downloads
  • v0.9.3 7d510078cf

    mmon 0.9.3
    Build & Publish / build-linux-deb (amd64) (push) Successful in 48s
    Build & Publish / build-linux-deb (arm64) (push) Successful in 47s
    Build & Publish / build-linux-deb (armhf) (push) Successful in 46s
    Build & Publish / build-linux-deb (i386) (push) Successful in 46s
    Build & Publish / build-windows (push) Successful in 1m37s
    Build & Publish / publish-release (push) Successful in 9s
    Stable

    MatCat released this 2026-08-05 17:33:27 -04:00 | 27 commits to main since this release

    [0.9.3] - 2026-08-05

    Added

    • Themes: 12 built-in color themes (default, dark, light, solarized,
      nord, gruvbox, monokai, ocean, forest, midnight, mono, matrix) cycled with
      F10; the active theme's name is shown in the top-right corner of the
      header. On first run the built-in themes are written to
      $XDG_CONFIG_HOME/mmon/themes/ (or %APPDATA%\mmon\themes on Windows) so
      they can be edited or overwritten, and any custom *.conf theme added there
      is picked up automatically. The theme file format maps named color roles
      (header, active, text, dim, CPU/GPU bar colors, selection colors, etc.) to
      fg or fg:bg color specs, with global background/foreground keys that
      fill in every role that does not override them (light themes get a full
      white background). The entire screen — including gaps between panels and
      left/right margins — is painted with the theme background. The selected
      theme is remembered in the main settings file. The built-in set covers
      distinct
      palettes (dark/light, solarized, nord, gruvbox, monokai, ocean, forest,
      midnight, mono, matrix); built-in theme files carry a version marker so
      stale themes written by older builds are refreshed automatically while
      user edits are preserved. Theme colors are clamped to the terminal's color
      depth — on terminals without 256-color support, palette colors map to the
      nearest basic color instead of falling back to black. Bar idle tracks are
      filled with an explicit background cell and blank rows are painted with a
      solid block on terminals without back_color_erase, so themes with a
      background render it everywhere (bars, gaps, margins) instead of leaving
      black areas.

    Changed

    • Theme role accent renamed to active and wired to the focused panel's
      label (CPU/Disk/Net) and the GPU label; old accent keys in theme files are
      still accepted as an alias.
    • gpu_label now colors the GPU section text (name, fan, clocks).
    • Configurable color thresholds in mmon.conf: temp_warn/temp_crit
      (70/85 °C) and power_warn/power_crit (150/250 W) colorize the
      temperature and power values (GPU info line and CPU sensors line) green /
      yellow / red using the theme's mem_ok/mem_warn/mem_crit; usage_warn/
      usage_crit (60/85 %) tune the usage-bar gradient.
    • forest theme updated to the new palette (dark 234 background, dark-green
      header, bright-green selection).

    Fixed

    • Windows header glitches: on the Windows console the solid-block
      background fill (for non-bce terminals) is unnecessary because PDCurses
      writes each cell's attributes explicitly, and it rendered as stray blocks
      near the header. The block fill is now Linux-only. PDCursesMod also no
      longer toggles console VT-processing mode around every ANSI color write
      (the rapid mode toggling intermittently dropped the header's background
      color, showing black digits); VT mode is enabled once and left on.
    Downloads