Skip to content

Releases: leecdiang/Silemetry-mac

Silemetry v0.2.2

Choose a tag to compare

@leecdiang leecdiang released this 04 Aug 16:31

v0.2.2 — FFI soundness + IOReport leak fixes

Fixed

  • Rust/Swift FFI soundness (PR #2): removed aliasing `&mut` references and a use-after-free window across the telemetry boundary.
  • Memory leak (PR #4): `IOReportCreateSamples` return value is now released.

Packaging

  • DMG now ships the drag-to-Applications shortcut.

Install: download the DMG, drag Silemetry onto Applications. Ad-hoc signed, arm64, macOS 14+.

Silemetry v0.2.1

Choose a tag to compare

@leecdiang leecdiang released this 03 Aug 05:10

Silemetry v0.2.1 — Stability & Data Integrity

Tests: 70/70 passing · CI: #15 success · Min macOS: 14.0 (Apple Silicon) · Signing: ad-hoc

🔧 Telemetry handle lifecycle & concurrency

All Rust-handle FFI (create/start/wait/stop/destroy) now runs on one serial queue; stop is enqueued behind in-flight reads so wait_next returns before destroy — no concurrent alias / use-after-free. The actor never touches the raw pointer again. The handle is wrapped in an @unchecked Sendable box so the invariant is type-checked.

🎯 Per-metric validity masks

Rust available_mask is now per-metric (sensor count + is_finite + sane ranges), no more blanket valid. First sample no longer skipped (seq starts at 1).

🛑 Stop / Discard / failure finalization

Discard after a failed save deletes the run explicitly — no orphan records. Failure state and archive write errors surfaced in UI.

📦 JSONL archive integrity & streaming summaries

Archive load cross-checks disk file vs stored summary; stored Complete degrades to Partial when missing/truncated/corrupt. Streaming 64 KB line-by-line decode cuts peak memory in Compare.

⚖️ Compare comparability & corrupt-data checks

Verdict uses disk-effective raw status so summary/details/banner can never contradict. Tighter comparability rules (ambient diff >2°C, both-unknown conditions, both-legacy metadata now warn).

🔄 SwiftData rollback & file transactions

Failed inserts roll back immediately; History deletes/renames roll back with files restored; sample dirs staged in Trash, purged only after the DB save succeeds.

💻 Dynamic device, power changes & true startedAt

Power source / Low Power Mode recorded at start+end with change flags; Compare warns on mid-test AC↔battery or low-power switches. createdAt reflects real test start. Battery-unreadable runs stay Unknown.

✅ Validation

7/7 acceptance from the final DMG: Quick Check, GPU Only, Combined, Monitor Only, Stop Save, History restart, Compare.


Assets: drag-to-install DMG, ZIP, and SHA256SUMS.

Silemetry v0.2.0

Choose a tag to compare

@leecdiang leecdiang released this 30 Jul 05:55
ffc0ed5

Added🌟

GPU workload bridge 🔥

  • Added GPUWorkloadManager
  • Added native Metal compute workload
  • Added two GPU levels: Moderate and Maximum
  • Added continuous command-buffer submission during GPU load phases
  • Added correct GPU start/stop behavior across completion and interruption

Stress Type 🤔

Added three workload modes:

  • CPU Only
  • GPU Only
  • CPU + GPU

The selected mode now controls workload startup, visible configuration fields, phase labels, and result semantics.

Core Target 🤖

Added CPU workload targeting for:

  • all cores
  • performance cores
  • efficiency cores

The native workload API now accepts a core type and maps it to macOS QoS classes.

Custom Test 🫪

Added a complete custom-test configuration view with:

  • Stress Type
  • Core Target
  • GPU Level
  • baseline duration
  • load duration
  • cooldown duration
  • sample interval
  • ambient temperature

The internal transition phase remains fixed at 5 seconds and is no longer exposed as a user-facing setting.

Dynamic device profile 💻

Added DeviceProfile and connected it to:

  • Home
  • Diagnostics
  • History
  • Results
  • Compare
  • interrupted-run persistence

Detected fields include model identifier, chip name, CPU core count, P/E topology, memory, macOS version, and Metal device.

Saved runs now keep the device information captured during the test.

Improved

Battery status

Added reusable BatteryStatusIcon.

It now distinguishes:

  • charging
  • running on battery
  • unavailable state
  • Low Power Mode

The icon and battery percentage use the same power-source snapshot.

Phase status

Added reusable StatusPill.

It uses adaptive labels and prevents phase names such as Monitoring from wrapping inside the capsule.

Home

  • Replaced hardcoded Apple M4 device text with dynamic device information
  • Updated battery and thermal status presentation

History

  • Added device summary to each run
  • Preserved compatibility with legacy records

Compare

  • Added compatibility checks for the new device fields
  • Added legacy fallback behavior
  • Improved different-device identification

Silemetry v0.1.0

Silemetry v0.1.0 Pre-release
Pre-release

Choose a tag to compare

@leecdiang leecdiang released this 28 Jul 14:49
755d8ed

Silemetry v0.1.0 Preview 1

This is the first public preview of Silemetry, a native Apple Silicon thermal and sustained-performance recorder for macOS.

This is an early-access build. It is useful today, but the UI, hardware compatibility, telemetry semantics, exports, and analysis may still change.

Included in Preview 1

Telemetry

  • CPU hottest readable thermal-zone temperature
  • CPU average readable thermal-zone temperature
  • GPU hottest readable thermal-zone temperature
  • GPU average readable thermal-zone temperature
  • CPU power
  • GPU power
  • package power where available
  • P-cluster frequency
  • E-cluster frequency
  • per-core CPU utilization
  • macOS Thermal State
  • AC/battery and test metadata where available

Testing and recording

  • Quick Check
  • Standard Test
  • Sustained Test
  • Extended Test
  • Monitor Only for external workloads
  • native CPU workload
  • live phase and sample tracking

Results and data

  • live temperature, power, frequency, and core views
  • persisted Results
  • persistent History
  • reopen runs after restarting the app
  • rename saved runs
  • delete saved runs
  • basic A/B comparison
  • sampling coverage and data-quality information
  • local export features included by the release candidate

Architecture and privacy

  • native SwiftUI app
  • embedded Rust telemetry core
  • no Homebrew required for release users
  • no Python runtime
  • no sudo
  • no kernel extension
  • no SIP modification
  • no external telemetry process
  • no telemetry upload
  • no analytics or advertising SDK

Validated configuration

The preview has been developed and primarily tested on:

  • 15-inch MacBook Air
  • Apple M4
  • 10-core CPU: 4 performance + 6 efficiency
  • 24 GB unified memory
  • macOS 26.5.2

Other Apple Silicon models may work, but are not yet equally validated.

Important metric notes

CPU Hottest is not an official Apple junction temperature

It is the maximum among the valid readable CPU thermal-zone sensors exposed to the embedded telemetry implementation.

CPU Average uses the same sensor group

It is the arithmetic mean of the valid readable CPU thermal-zone sensors.

Thermal State is a separate system signal

macOS Thermal State may remain Nominal while an individual readable sensor is hot. It must not be interpreted as a direct 100°C or 105°C threshold.

Frequency labels matter

P-cluster and E-cluster frequencies are cluster-level metrics. They are not automatically ten independent instantaneous core frequencies.

Known limitations

  • Preview-quality software may contain functional and UI bugs.
  • Apple Silicon telemetry interfaces can change across macOS versions.
  • Some fields can be unavailable on other chips.
  • Quick Check does not establish thermal steady state.
  • Compare is only meaningful when test conditions match.
  • Ambient temperature and background activity can materially affect results.
  • Some compact-window and localization issues may remain.
  • Thermal State may remain Nominal during a hot CPU run.
  • Export features may still be refined.
  • Signing and notarization status must be checked on the release page.

Safety

Silemetry intentionally creates sustained CPU load.

The enclosure may become hot. macOS thermal protection remains enabled. Silemetry does not change voltage, clocks, power limits, fan policy, or SMC settings.

Application icon attribution

Silemetry uses ai-chip-robot-flat from the Streamline Flex Color icon collection.

No visual modification was made. The artwork was only converted and resized for the macOS AppIcon asset catalog.

Release assets

Expected assets:

  • Silemetry-v0.1.0-preview.1-arm64.dmg
  • Silemetry-v0.1.0-preview.1-arm64.zip
  • Silemetry-v0.1.0-preview.1-SHA256SUMS.txt

Verify the SHA-256 checksum before installing or mirroring a binary.

Installation

  1. Download the DMG from this GitHub Release.
  2. Verify its SHA-256 checksum.
  3. Open the DMG.
  4. Drag Silemetry into Applications.
  5. Launch Silemetry.

When the build is not notarized, use Control-click → Open or approve it in System Settings → Privacy & Security. Do not disable Gatekeeper globally.

Feedback

When reporting a bug, include:

  • Mac model and chip
  • macOS version
  • Silemetry version/build
  • telemetry-core version
  • test mode
  • reproduction steps
  • screenshot
  • exported Diagnostics when available

Do not post private or unrelated data in a public issue.