Skip to content

actop 1.8.0

Choose a tag to compare

@binlecode binlecode released this 12 Aug 20:49
· 42 commits to main since this release
c53e879

Added

  • Net / disk I/O rates — the last open must-have on the roadmap (N track,
    first flagged 2026-07-02 with an on-device feasibility spike), shipped end to
    end:
    • Network via native getifaddrs()/AF_LINK/struct if_data bindings in
      native_sys.py (read_network_totals()) — summed cumulative byte/packet
      counters across non-loopback interfaces, list freed every call.
    • Disk via IOKit AppleAPFSVolume Statistics with
      IOBlockStorageDriver fallback (actop/disk_registry.py,
      read_disk_totals()) — the same unprivileged traversal pattern as
      gpu_registry.py, no new binding classes.
    • Sampler deltas both into bytes/s rates (net_rx_bps / net_tx_bps /
      disk_read_bps / disk_write_bps), averaged across sub-samples, on
      SystemSnapshot with net_available / disk_available flags mirroring
      bandwidth_available.
    • Surfaced everywhere: TUI Net ↓/↑ and Disk R/W rows (decimal throughput,
      hide-row pattern when unavailable), NDJSON, and Prometheus gauges
      (actop_network_receive_bytes_per_second, actop_network_transmit_bytes_per_second,
      actop_disk_read_bytes_per_second, actop_disk_write_bytes_per_second).
    • Pre-work landed with it: hw.memsize / hw.pagesize are module-cached
      instead of re-read via sysctlbyname every tick.

Changed

  • Export/config paths read the pre-computed package_ref_w / max_total_bw
    straight from get_soc_info() (single source of truth) instead of
    recomputing them from chart references.
  • scripts/tag_release.sh sets ACTOP_TAG_RELEASE so its own tag push no
    longer trips the pre-push hook's tag warning.
  • Docs: SPEC-system.md compacted and gained the net/disk as-built section
    (§2.4); completed TODO/REVIEW docs dropped; cover page gained a Net/disk I/O
    feature card.

Removed

  • Deprecated *_gb aliases (deferred since the v1.5.0 reading-plane audit —
    §3.5 of that release's notes). Everything that carried a rounded binary
    quantity under a decimal name is gone after one full release cycle of
    deprecation:

    • SystemSnapshot.ram_used_gb / ram_total_gb / swap_used_gb /
      swap_total_gb — read the exact *_bytes fields.
    • ProcessSample.rss_mb — read ProcessSample.rss_bytes.
    • utils.convert_to_GB alias — use convert_to_GiB.
    • *_GB dict keys from utils.get_ram_metrics_dict() — use the *_bytes keys.
    • actop_ram_used_gigabytes / actop_swap_used_gigabytes Prometheus gauges —
      scrape actop_ram_used_bytes / actop_swap_used_bytes.
  • --alert-swap-rise-gb CLI flag (deprecated alias for
    --alert-swap-rise-gib since v1.5.0; the threshold was always compared
    against GiB). The canonical spelling is the only one accepted.