Skip to content
CAI
Software that uses CAICheck a score

exelban/stats

58.3

Adequate · 22 September 2026

37.9k

lines of production code

Swift

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Stats is a macOS menu bar utility that monitors system hardware metrics, including CPU, GPU, RAM, disk, network, battery, and sensors, while also supporting Bluetooth device tracking and a clock. It features a modular architecture with customizable widgets, persistent historical data storage, and remote system monitoring capabilities via MQTT. The application includes a privileged helper for fan control, extensive internationalization support, and integration with macOS widgets and notifications.

How it got here

2019–2020 — Modular architecture and internationalization

34 changes.

The project was restructured from a flat layout into a modular framework architecture, with individual system monitoring components like CPU, GPU, and Disk refactored into standalone Swift modules. This period also established comprehensive internationalization support by adding localization files for numerous languages and introduced new hardware monitoring capabilities such as the Sensors and GPU modules.

2021–2022 — Kit framework and localization expansion

23 changes.

The project introduced the Kit framework to consolidate shared code and standardize module management, while simultaneously adding a new Bluetooth module and a privileged SMC helper for fan control. This period also saw significant expansion of internationalization support with the addition of numerous language localizations and updates to existing ones.

2023–2026 — Localization expansion and new modules

15 changes.

This period focused on significantly expanding internationalization support by adding localization files for numerous languages, including Slovak, Thai, Estonian, Hindi, Arabic, Finnish, Bengali, and Tamil. It also introduced several new functional modules, such as a Clock module with calendar support, a Remote module for monitoring external systems, and a United widget for combined system stats. Additionally, the project integrated LevelDB for persistent historical data storage and established the necessary configuration for the macOS widget extension.

Features

Added Arabic localization for Stats

This change introduces the initial Arabic (ar.lproj) translation file for the Stats application, providing UI strings for modules, settings, dashboard, and setup wizards in Arabic. Users with Arabic language settings will now see the interface translated, including labels for system monitors, configuration options, and onboarding flows.

Stats/Supporting Files/ar.lproj · high confidence

Added Australian English localization

The application now includes a new Australian English (en-AU) language pack, providing localized strings for the main interface, module settings, dashboard, and setup wizard. This allows users with their system region set to Australia to see the application in their preferred locale.

Stats/Supporting Files/en-AU.lproj · high confidence

Added Bengali language support

Users can now see the Stats interface in Bengali. This change adds the complete set of localized strings for the Bengali locale (bn.lproj), covering module names, settings, setup wizards, and alerts.

Stats/Supporting Files/bn.lproj · high confidence

Added Brazilian Portuguese (pt-BR) localization

Users who select Brazilian Portuguese as their display language will now see the application interface translated, including module names (CPU, GPU, RAM, etc.), settings options, setup wizard steps, and alert messages. This new localization file provides the necessary strings for the Stats application to present its features in Portuguese (Brazil).

Stats/Supporting Files/pt-BR.lproj · high confidence

Added Bulgarian language support

Users can now use the Stats application in Bulgarian. This change introduces the initial Bulgarian localization file (bg.lproj/Localizable.strings), providing translations for core interface elements, module names (such as CPU, GPU, RAM, Network, Battery, Bluetooth, and Sensors), setup wizard steps, and common settings options.

Stats/Supporting Files/bg.lproj · high confidence

Added Catalan (ca) localization for Stats

Users can now see the application interface in Catalan. This change introduces the complete set of translated strings for the Catalan locale, covering module names (CPU, GPU, RAM, etc.), setup wizards, settings panels, dashboard information, and update alerts.

Stats/Supporting Files/ca.lproj · high confidence

Added Croatian language support

Users can now use the Stats application in Croatian. This change adds the \hr.lproj\ localization bundle, providing translations for the interface, including module names (CPU, GPU, RAM, etc.), settings, dashboard information, and setup wizards.

Stats/Supporting Files/hr.lproj · high confidence

Added Czech language localization

The application now includes a complete Czech (cs) localization file, translating the user interface, settings, and setup wizard into Czech. This allows Czech-speaking users to interact with the Stats menu bar application in their native language.

Stats/Supporting Files/cs.lproj · high confidence

Added Danish localization for Stats

This change introduces the Danish language (da.lproj) localization file for the Stats application, providing translations for module names (CPU, GPU, RAM, etc.), setup wizards, settings, and dashboard information. Users with Danish system preferences will now see the interface in their native language.

Stats/Supporting Files/da.lproj · high confidence

Added Estonian language localization

Users can now see the Stats interface in Estonian, with a complete set of translated strings for modules, settings, dashboard, and alerts.

Stats/Supporting Files/et.lproj · high confidence

Added Finnish language support

Users can now see the Stats interface in Finnish. This change adds the complete set of localized strings for the Finnish locale, covering module names (CPU, GPU, RAM, etc.), settings options, dashboard information, and setup wizard text.

Stats/Supporting Files/fi.lproj · high confidence

Added French localization for Stats

French users will now see the application interface translated into French, including module names (CPU, GPU, RAM, etc.), settings options, setup wizard steps, and alert messages.

Stats/Supporting Files/fr.lproj · high confidence

Added Greek (el) localization for the Stats application

Users can now see the application interface in Greek. This change introduces the complete Greek translation file (Localizable.strings) for the Stats menu bar utility, covering module names (CPU, GPU, RAM, etc.), setup wizard steps, settings options, and dashboard information.

Stats/Supporting Files/el.lproj · high confidence

Added Hebrew language support

Users can now see the Stats interface in Hebrew. This change adds the initial Hebrew localization file (he.lproj/Localizable.strings), covering module names (CPU, GPU, RAM, etc.), setup wizard steps, settings options, and dashboard information.

Stats/Supporting Files/he.lproj · high confidence

Added Hindi language support

Users can now use the Stats application in Hindi, with the new \hi.lproj\ localization file providing translations for module names, settings, dashboard information, and setup wizards.

Stats/Supporting Files/hi.lproj · high confidence

Added Hungarian language support

Users can now use the Stats application in Hungarian. This change introduces the initial Hungarian localization file (hu.lproj/Localizable.strings), providing translations for core UI elements, module names (such as CPU, GPU, RAM, Network, Battery), setup wizard steps, and common settings options.

Stats/Supporting Files/hu.lproj · high confidence

Added Indonesian language support

Users can now view the Stats interface in Indonesian. This change adds a new localization file (id.lproj/Localizable.strings) containing translations for module names, settings, dashboard information, and setup prompts, enabling a fully localized experience for Indonesian-speaking users.

Stats/Supporting Files/id.lproj · high confidence

Added Italian localization for Stats

Users can now see the application interface in Italian. This change introduces the complete Italian translation file (Localizable.strings) for the Stats application, covering module names (CPU, GPU, RAM, etc.), settings, setup wizards, and dashboard information.

Stats/Supporting Files/it.lproj · high confidence

Added Japanese language support

The application now includes a complete Japanese localization, allowing users to view the interface, settings, and setup wizards in Japanese. This covers all core modules (CPU, GPU, RAM, Disk, Sensors, Network, Battery, Bluetooth, Clock), dashboard information, update notifications, and general application settings.

Stats/Supporting Files/ja.lproj · high confidence

Added Korean language support

Users can now view the Stats interface in Korean. This change introduces the initial Korean localization file (ko.lproj/Localizable.strings), covering module names (CPU, GPU, RAM, etc.), setup wizard text, settings options, and common UI strings.

Stats/Supporting Files/ko.lproj · high confidence

Added LevelDB as a persistent storage backend for historical data

The Kit/lldb component now includes the LevelDB library (version 1.23) to provide a persistent, ordered key-value store for historical data. This change introduces the core LevelDB C++ and C API headers (including db.h, options.h, and cache.h) into the kit, enabling the application to store and retrieve historical records locally rather than relying solely on in-memory or external storage solutions.

Kit/lldb · high confidence

Added Norwegian Bokmål language support

Users can now see the Stats interface in Norwegian Bokmål. This change adds the initial localization file (Localizable.strings) for the 'nb' locale, covering module names (CPU, GPU, RAM, etc.), setup screens, settings, and common UI strings.

Stats/Supporting Files/nb.lproj · high confidence

Added Persian (Farsi) localization for the Stats application

Users with Persian language settings will now see the application interface translated into Farsi. This new localization file covers the main menu modules (CPU, GPU, RAM, etc.), setup wizards, settings panels, dashboard information, and update alerts, ensuring a consistent experience in Persian across the app.

Stats/Supporting Files/fa.lproj · high confidence

Added Polish language localization

Users can now see the Stats interface in Polish. This change introduces the complete set of translated strings for the application's modules, settings, dashboard, and setup wizard, replacing English labels with their Polish equivalents (e.g., "CPU" becomes "Procesor", "Settings" becomes "Ustawienia").

Stats/Supporting Files/pl.lproj · high confidence

Added Portuguese (Portugal) localization

Users can now see the Stats interface in Portuguese (Portugal), with translations covering module names, settings, dashboard information, and setup flows.

Stats/Supporting Files/pt-PT.lproj · high confidence

Added Romanian language support

Users can now see the application interface in Romanian. This change adds a new localization file (ro.lproj/Localizable.strings) containing translations for module names (CPU, GPU, RAM, etc.), setup screens, settings, and common UI elements.

Stats/Supporting Files/ro.lproj · high confidence

Added Russian language localization for Stats

Users can now see the Stats interface in Russian. This change introduces the \ru.lproj/Localizable.strings\ file, providing translations for module names (CPU, GPU, RAM, Disk, Sensors, Network, Battery, Bluetooth, Clock), setup wizard steps, settings options, and alert messages.

Stats/Supporting Files/ru.lproj · high confidence

Added Simplified Chinese (zh-Hans) localization

Users can now see the Stats interface in Simplified Chinese. This change adds the initial translation file for zh-Hans, covering module names (CPU, GPU, RAM, etc.), setup wizard steps, settings options, and common UI strings.

Stats/Supporting Files/zh-Hans.lproj · high confidence

Added Slovak language support

Users can now use the application in Slovak. This change adds the initial Slovak localization file (sk.lproj/Localizable.strings), providing translations for module names (CPU, GPU, RAM, etc.), settings, dashboard information, and setup screens.

Stats/Supporting Files/sk.lproj · high confidence

Added Slovenian language support

Users can now see the Stats interface in Slovenian, as a new Localizable.strings file has been added for the sl.lproj localization bundle, covering module names, settings, setup wizards, and alerts.

Stats/Supporting Files/sl.lproj · high confidence

Added Tamil language support

Users can now view the Stats interface in Tamil. This change adds a new localization file (ta.lproj/Localizable.strings) containing translations for all core UI elements, including module labels (CPU, GPU, RAM, etc.), settings options, dashboard information, and setup prompts.

Stats/Supporting Files/ta.lproj · high confidence

Added Thai language support

Users can now use the Stats application in Thai, as a new localization file (Localizable.strings) has been added for the Thai (th) language. This includes translations for module names (CPU, GPU, RAM, etc.), settings, dashboard information, and setup wizards, enabling a fully localized experience for Thai-speaking users.

Stats/Supporting Files/th.lproj · high confidence

Added Turkish language support

Users can now see the Stats interface in Turkish. This change adds the initial Turkish localization file (tr.lproj/Localizable.strings), covering module names (CPU, GPU, RAM, etc.), setup screens, settings options, and common UI strings.

Stats/Supporting Files/tr.lproj · high confidence

Added Ukrainian localization for Stats

Users can now see the Stats interface in Ukrainian. This change introduces the \uk.lproj\ localization bundle, providing translations for module names (CPU, GPU, RAM, Disk, Sensors, Network, Battery, Bluetooth, Clock), setup wizard steps, settings options, and dashboard information.

Stats/Supporting Files/uk.lproj · high confidence

Added United widget to display combined system stats

A new 'United widget' has been added to the macOS widget extension, providing a single view that visualizes CPU, GPU, RAM, and disk utilization simultaneously. This widget reads usage data from the respective modules via shared user defaults and displays them as circular gauges in a grid layout, complementing the existing individual widgets for each hardware component.

Widgets · high confidence

Added Vietnamese language support

Users can now see the Stats interface in Vietnamese, with a complete set of localized strings covering module names (CPU, GPU, RAM, etc.), settings, setup wizards, and alerts.

Stats/Supporting Files/vi.lproj · high confidence

Added widget extension configuration and entitlements

The Widgets extension now includes its own Info.plist and entitlements file, defining the extension bundle identifier, version 3.0.17, and the App Group required for sharing data with the main application.

Widgets/Supporting Files · high confidence

Disk module restructured into a standalone framework with new SMART and widget capabilities

The Disk module has been refactored into a standalone framework (Modules/Disk) containing its own Info.plist, configuration, and source files. This change introduces ATA and NVMe SMART data readers, allowing users to view drive health metrics like temperature and life percentage. It also adds new visualization widgets, including a Pie Chart for usage, a Network Chart for I/O activity, and a macOS System Widget for the menu bar. Additionally, the module now supports customizable read/write colors, a text widget with variable substitution, and improved disk capacity calculations that exclude purgeable space.

Modules/Disk · high confidence

German localization strings added

The German language localization file (de.lproj/Localizable.strings) has been added, providing translations for the application's interface, including module names (CPU, GPU, RAM, etc.), setup wizard steps, settings options, and dashboard information.

Stats/Supporting Files/de.lproj · high confidence

Initial English (GB) localization strings for Stats

The application now includes a complete set of English (GB) localization strings, covering module labels (CPU, GPU, RAM, etc.), setup wizard steps, settings options, dashboard information, and update notifications. This enables the user interface to display correctly in British English for the first time.

Stats/Supporting Files/en-GB.lproj · high confidence

Initial English localization for Stats

The application now includes a complete English language resource file (Localizable.strings) containing over 500 strings. This provides translations for all core modules (CPU, GPU, RAM, Disk, Sensors, Network, Battery, Bluetooth, Clock), the initial setup wizard with preset selection, application settings (including update checks and import/export), dashboard information, and various alerts and status messages.

Stats/Supporting Files/en.lproj · high confidence

Initial Traditional Chinese (Taiwan) localization for Stats

Users can now view the Stats interface in Traditional Chinese (Taiwan). This change adds the zh-Hant.lproj localization file, providing translations for core module names (CPU, GPU, RAM, Disk, Sensors, Network, Battery, Bluetooth, Clock), setup wizard steps, application settings (such as update checks and import/export), and dashboard information. This enables a fully localized experience for users with this language setting.

Stats/Supporting Files/zh-Hant.lproj · high confidence

Initial configuration of Stats app metadata and entitlements

The Stats application bundle is initialized with an Info.plist defining it as a menu-bar utility (LSUIElement=true) and a Stats.entitlements file granting access to Apple's application groups for widget integration and disabling library validation. These files establish the core app identity, minimum system version, and necessary permissions for the system monitor to function.

Stats/Supporting Files · high confidence

Initial project scaffolding and build configuration

This change introduces the foundational repository structure for the Stats application, including the MIT License, a comprehensive README with installation and usage instructions, and the initial SwiftLint configuration to enforce code style. It also establishes the automated build pipeline via a Makefile that handles archiving, notarization using Apple's notarytool, code signing, and DMG creation, alongside build artifacts configuration in .gitignore and exportOptions.plist.

(repo-wide) · high confidence

Initial release of the Sensors module

The Sensors module is now available, providing a unified view for system hardware metrics including temperatures, voltages, power, and fan speeds. It features a popup view with fan control capabilities, a portal view for dashboard-style display, and configurable notifications for temperature thresholds. The module supports reading data via SMC and, on Apple Silicon, HID and IOReport sensors, with settings to toggle unknown sensors and adjust update intervals.

Modules/Sensors · high confidence

Introduce new Bluetooth module with BLE battery tracking and notifications

A new Bluetooth module has been added, providing a Sensors widget to display battery levels for Bluetooth Low Energy (BLE) devices and a popup view for quick access. The module includes a settings interface to toggle individual device visibility and supports battery-level change notifications. It utilizes CoreBluetooth and system profilers to read device data, with caching to optimize performance.

Modules/Bluetooth · high confidence

Introduction of new Kit plugin infrastructure and remote monitoring capabilities

The Kit/plugins area now includes a comprehensive set of new foundational components: a redesigned Charts module with support for multiple scaling types (linear, square, cube, logarithmic, fixed) and animations; a new DB plugin using LLDB for historical data storage with write throttling; a custom NextLog logger replacing system logging; a Reachability plugin for network status monitoring; a Repeater plugin for scheduled tasks; and a Store plugin with caching and secure import/export (excluding remote credentials). Additionally, a new SystemStats plugin enables remote system monitoring via MQTT, and the Updater plugin has been enhanced with server-based version checks and improved DMG installation handling.

Kit/plugins · high confidence

Introduction of the Kit module framework for unified module management

The application now uses a new \Kit\ module framework to manage system modules, centralizing configuration loading, widget initialization, and UI component handling. This change introduces a standardized \Module\ class that handles module state, menu bar integration, and popup/portal views, while replacing previous ad-hoc implementations with structured wrappers for notifications, popups, and settings. Users benefit from more consistent module behavior, improved popup management (including keyboard shortcuts and visibility controls), and a unified settings interface that supports module-specific configurations, previews, and notification thresholds.

Kit/module · high confidence

New Clock module for displaying time and calendar

A new Clock module has been added, allowing users to display one or more clocks in the menu bar, popup, and portal views. The module supports configurable time formats, time zones, and calendar systems (including Gregorian, Buddhist, Chinese, etc.). Users can enable NTP synchronization for accurate timekeeping, toggle the visibility of a calendar view with optional week numbers in the popup, and rearrange multiple clocks via drag-and-drop. Settings are persisted locally, and the module integrates with the existing widget system for menu bar display.

Modules/Clock · high confidence

New GPU module with detailed utilization tracking and macOS widgets

A new GPU module has been added to the application, providing real-time monitoring of GPU utilization, renderer and tiler usage, Apple Neural Engine (ANE) activity, and frames per second (FPS). The module includes a popup view with usage history charts, a macOS system widget for the desktop, and configurable notifications for usage thresholds. It supports multiple GPUs, allowing users to select which GPU to display, and works with Intel, AMD, Nvidia, and Apple Silicon graphics.

Modules/GPU · high confidence

New Remote module for monitoring remote systems

A new Remote module has been added, enabling users to monitor remote machines and hosts via the System Stats service. This feature introduces a popup view that displays real-time status, CPU and RAM usage, and latency for grouped devices, alongside a settings interface for managing machine and host visibility and organization.

Modules/Remote · high confidence

New privileged SMC helper daemon for fan control

A new privileged helper tool (SMC/Helper) has been introduced to manage System Management Controller (SMC) operations, specifically fan control, replacing previous methods like AppleScript. This helper runs as a launchd daemon, communicates via XPC, and enforces strict code-signing verification to ensure only the main Stats application can interact with it. It exposes functions to set fan modes, adjust fan speeds, and reset control, while also supporting an uninstall command for cleanup.

SMC/Helper · high confidence

New utility scripts for signing, updates, uninstallation, and localization

The Kit/scripts directory now includes several new tools to support the application's lifecycle and maintenance. SMJobBlessUtil.py assists in checking and correcting code signatures for privileged helper tools, while the updated updater.sh script now uses ditto (falling back to cp) to prevent macOS widgets from resetting during updates. A new uninstall.sh script provides a clean removal of the app, its helper daemon, and associated data. Additionally, changelog.py automates release notes generation from commit history, and i18n.py manages translation files with new capabilities to scan for untranslated strings and fix missing keys.

Kit/scripts · high confidence

SMC tool initialized as a standalone command-line application

The SMC component is now available as an independent command-line utility, allowing users to directly query hardware keys (list), set specific key values (set), and manage fan speeds and modes (fan, fans, reset) via terminal commands. This change introduces a new Makefile for building the tool and a Swift-based main entry point that exposes these capabilities without requiring the broader Stats application framework.

SMC · high confidence

Swedish localization added for Stats

The Swedish language pack for the Stats application has been added, providing translations for the user interface including module names (CPU, GPU, RAM, etc.), setup wizards, settings options, and dashboard information. This allows Swedish-speaking users to interact with the application in their native language.

Stats/Supporting Files/sv.lproj · high confidence

Removals

Mini Stats application removed

The Mini Stats macOS application, which displayed CPU, memory, and disk usage in the menu bar, has been completely removed from the codebase. This deletion includes the project configuration, the main application entry point, the status bar view and its XIB layout, the data readers for system metrics, and the internal state management and utility libraries.

Mini Stats, Mini Stats.xcodeproj · high confidence

Architecture

Introduction of the Kit framework

The Kit framework has been introduced to consolidate shared code, including constants, extensions, helpers, and type definitions, into a single reusable component. This change provides a centralized location for core utilities such as process management, formatting, and configuration settings used across the application.

Kit · high confidence

Project structure reorganized into modular frameworks

The Stats project has been restructured to use a modular architecture, with system monitoring logic moved into dedicated frameworks (CPU, GPU, RAM, Disk, Net, Bluetooth, Clock, Remote, and Kit). This change consolidates shared code into the Kit framework and embeds these modules into the main application, replacing the previous flat structure.

Stats.xcodeproj · high confidence

Behavioural changes

Added English localization assets for Stats and its modules

The project now includes the initial English localization files (en.xcloc) for the main Stats application and its bundled modules (LaunchAtLogin, ModuleKit, Battery, CPU, Disk, GPU, Memory, Net, and Sensors). This adds the necessary Xcode localization structure and source strings to support internationalization, ensuring bundle names and copyright information are properly localized for English-speaking users.

(repo-wide) · high confidence

App launch sequence and module initialization restructured

The application now uses a lazy-loaded setup flow where the Setup window is presented before modules are mounted, ensuring configuration is complete before the menu bar widgets appear. Module initialization order has been reversed (from the previous default) to optimize startup performance, and the app now suppresses status bar constraint updates during launch to prevent visual glitches. Additionally, the app respects command-line arguments for resetting preferences (--reset), disabling specific modules (--disable), and managing DMG paths (--dmg-path, --mount-path) during startup.

Stats · high confidence

Battery module restructured into a standalone framework with enhanced data and UI

The Battery module has been refactored into a standalone module structure, introducing a new \Battery\_Usage\ data model that exposes detailed metrics including charging current, voltage, adapter power, and optimized charging status. This change brings a redesigned popup view that displays battery and power adapter values simultaneously, adds a dedicated portal view for system integration, and implements configurable low/high battery level notifications. The module now supports multiple widget types (label, mini, bar chart, battery, and details) and includes a top processes reader to monitor battery-consuming applications.

Modules/Battery · high confidence

CPU module rewritten in Swift with modular architecture

The CPU module has been completely rewritten in Swift, replacing the previous implementation with a modular structure that separates concerns into distinct components: readers for data collection (load, frequency, temperature, processes), a popup view for detailed metrics, a portal view for macOS widgets, a preview view for the dashboard, and a settings view for configuration. This change introduces support for Apple Silicon efficiency and performance core monitoring, customizable colors for different core types and load states, and a new notification system that allows users to set thresholds for total, system, user, and specific core load. The module now uses a shared \Store\ for configuration persistence and integrates with the new \Kit\ framework for common utilities, resulting in improved performance and maintainability.

Modules/CPU · high confidence

LaunchAtLogin helper extracted and hardened for macOS Big Sur

The LaunchAtLogin functionality has been moved into its own dedicated helper application, separating it from the main app bundle. This new helper is configured as a background-only utility (replacing the previous LSUIElement setting) and targets macOS 11.0 (Big Sur) as the minimum system version. The extraction includes a more robust launch mechanism that verifies the main application is not already running before attempting to open it, and the helper's entitlements have been simplified by removing the file-user-selected-read-only permission.

LaunchAtLogin · high confidence

Network module restructured with new notification and reader components

The Network module has been reorganized into distinct Swift source files (main, readers, popup, settings, notifications, portal, preview) to support a comprehensive notification system for connectivity, interface changes, local/public IP shifts, and WiFi network changes. The module now includes configurable thresholds to prevent notification spam, supports both ICMP and HTTP connectivity checks, and exposes detailed network data (including latency, jitter, and interface details) through the popup, portal, and preview views.

Modules/Net · high confidence

RAM module restructured with new configuration and notification settings

The RAM module has been reorganized to use a dedicated config.plist for widget definitions and settings, replacing the previous inline configuration. This change introduces a new notifications system that allows users to set thresholds for total RAM usage, free memory, memory pressure, and swap size. The module now supports a 'Combined processes' option to group processes by their responsible PID and includes updated settings for customizing colors for app, wired, and compressed memory segments in charts.

Modules/RAM · high confidence

Redesigned and unified widget kit with new configuration options

The Kit/Widgets module has been refactored to provide a more consistent and configurable experience across all system monitors. The Battery widget now supports an 'inner percentage' display, customizable charger icons, and an optimized charging state that hides additional info when full. The Speed widget has been restructured to support one- or two-row modes, customizable input/output colors, and flexible value alignment. Chart widgets (Line, Network, Bar, Pie) now offer monochrome accents, custom color zones, and adjustable history counts. The Memory widget allows hiding symbols and reversing the free/used order, while the new Dot widget provides a simple color indicator. These changes unify the visual style and settings structure across the application.

Kit/Widgets · high confidence

Redesigned settings and setup windows with new support and combined modules options

The application settings and setup interfaces have been redesigned to improve usability and appearance. The App Settings view now includes dedicated sections for managing Combined Modules (enabling a single menu bar item for all widgets, with options for spacing, separators, and popup behavior) and System Stats (allowing users to sign in, monitor, and control remote access). The Setup window has been updated to a multi-page flow, guiding users through initial configuration steps like preset selection and login preferences. Additionally, a new Support window has been added, providing direct links to System Stats, GitHub Sponsors, PayPal, Ko-fi, and Patreon for users wishing to contribute.

Stats/Views · high confidence

Updated Dutch localization strings

The Dutch language file (nl.lproj/Localizable.strings) has been updated with new and corrected translations for various UI elements, including module names (e.g., Disk, Sensors, Network), settings options (e.g., Combined modules, Spacing), and setup messages. This ensures that Dutch-speaking users see accurate terminology for system monitoring features and configuration options.

Stats/Supporting Files/nl.lproj · high confidence

Updated Spanish localization strings

The Spanish language file (es.lproj) has been updated with new and corrected translations for various UI elements, including module settings, dashboard information, and setup wizards.

Stats/Supporting Files/es.lproj · high confidence

Updated Xcode project schemes for SMC, Stats, and Widgets

The Xcode project configuration in Stats.xcodeproj/xcshareddata has been updated to include new or modified schemes for the SMC command-line tool, the main Stats application, and the WidgetsExtension. The SMC scheme is configured to launch with the 'fan 0' command-line argument enabled by default, reflecting the move to a dedicated SMC app for fan control. The Stats scheme now includes the Helper target in its build actions and passes the '--omit' argument at launch, while the WidgetsExtension scheme is configured to launch with the WidgetKit Simulator to support widget development.

Stats.xcodeproj/xcshareddata · high confidence

Workspace renamed from Mini Stats to Stats

The Xcode workspace has been renamed from 'Mini Stats' to 'Stats', updating the project file references and workspace configuration files to reflect the new name.

Stats.xcodeproj/project.xcworkspace · high confidence

Test coverage

Added unit tests for version comparison and RAM process parsing

Added test coverage for the Kit module's version comparison logic (including release, beta, and malformed version strings) and for the RAM module's process reader, verifying correct parsing of process names, PIDs, and memory usage calculations across various unit formats.

Tests · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 55 → 58 (+2.8)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 94 → 80 (-13.5)
  • Architecture 99 → 98 (-1.1)
  • Maturity 45 → 48 (+3.5)
  • Readiness 52 → 52 (+0.3)
  • Security 56 → 72 (+16.0)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (11)

  • Change coupling: PieChart.swift ↔ Tachometer.swift (Kit/Widgets/PieChart.swift)
  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — no supported dependency manifest was read
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No exposed public API
  • Off-boarding risk: anonymized user #1
  • Test reliability not included
  • complexity unreadable for .py, .swift — churn × complexity hotspots could not be measured

New (413)

  • ActivityReader.read (cognitive 56) (Modules/Disk/readers.swift)
  • ActivityReader.read (cyclomatic 19) (Modules/Disk/readers.swift)
  • AppDelegate.parseArguments (cognitive 27) (Stats/AppDelegate.swift)
  • AppDelegate.parseArguments (cyclomatic 17) (Stats/AppDelegate.swift)
  • BarChart.draw (cognitive 44) (Kit/Widgets/BarChart.swift)
  • BarChart.draw (cyclomatic 27) (Kit/Widgets/BarChart.swift)
  • BarChart.init (cognitive 28) (Kit/Widgets/BarChart.swift)
  • BatteryView.draw (cognitive 16) (Modules/Battery/popup.swift)
  • BatteryWidget.draw (cognitive 44) (Kit/Widgets/Battery.swift)
  • BatteryWidget.draw (cyclomatic 30) (Kit/Widgets/Battery.swift)
  • Boundary-crossing change coupling: main.swift ↔ main.swift (Modules/CPU/main.swift)
  • Boundary-crossing change coupling: main.swift ↔ main.swift (Modules/CPU/main.swift)
  • CPU.loadCallback (cognitive 46) (Modules/CPU/main.swift)
  • CPU.loadCallback (cyclomatic 23) (Modules/CPU/main.swift)
  • CalendarView.generateDays (cognitive 19) (Modules/Clock/popup.swift)
  • CalendarView.generateDays (cyclomatic 17) (Modules/Clock/popup.swift)
  • CapacityReader.diskSpaceInBytes (cognitive 18) (Modules/Disk/readers.swift)
  • CapacityReader.read (cognitive 98) (Modules/Disk/readers.swift)
  • CapacityReader.read (cyclomatic 26) (Modules/Disk/readers.swift)
  • ClassTooLong: FanView (Modules/Sensors/popup.swift)
  • …and 393 more

Changes since last survey

  • 50 commits — 29 feature/other, 21 fixes

By area

  • Stats.xcodeproj/project.pbxproj — 7 commits
  • Stats/Supporting Files — 5 commits
  • Kit/helpers.swift — 4 commits
  • Modules/Battery — 4 commits
  • Modules/Disk — 4 commits
  • Stats/Views — 4 commits
  • Kit/plugins — 3 commits
  • Modules/Net — 3 commits
  • Modules/Sensors — 3 commits
  • Kit/Widgets — 2 commits
  • Kit/extensions.swift — 2 commits
  • Modules/Bluetooth — 2 commits
  • Modules/GPU — 2 commits
  • Modules/Remote — 2 commits
  • (root) — 1 commit
  • Kit/module — 1 commit
  • Modules/CPU — 1 commit

Notable commits

  • fix: fix: added DCP0 group to the GPU FPS reader (#3551)
  • fix: fix: fixed Bluetooth reader starting CoreBluetooth scans while the module is disabled (#3572)
  • fix: fix: fixed ICMP connectivity reader leaking sockets on repeated prepare
  • fix: fix: fixed NVMe SMART temperature overflow for drives reporting below 273 K
  • fix: fix: fixed Total System Consumption spike after wake from sleep (#3543)
  • fix: fix: fixed battery health value exceeding 100% (#3445)
  • fix: fix: fixed blurry inactive widget previews in the settings window in some cases
  • fix: fix: fixed hidden "Sensor to show" option in the Sensors settings on startup (#3584)
  • fix: fix: fixed incorrect battery power on Intel Macs while charging (#3577)
  • fix: fix: fixed invisible text in the Help window on light appearance (#3523)
  • fix: fix: fixed mach port leaks in the CPU/RAM readers and the Sensors HID reader
  • fix: fix: fixed malformed data handling in the GPU reader, Network reader and small thread-safety in Logger
  • fix: fix: fixed nvme_smart_log struct layout in the NVMe SMART reader (#3547)
  • fix: fix: fixed per-core CPU load calculation after tick counter overflow (#3529)
  • fix: fix: fixed potential chart crashes on invalid history count or non-finite values
  • fix: fix: fixed potential race during SMC helper update (#3592)
  • fix: fix: fixed separator color in the combined modules (#3534)
  • fix: fix: fixed the Battery reader overwriting the battery values with a connected UPS (#3616)
  • fix: fix: fixed the Network reader polling airportd when the module is disabled (#3629)
  • fix: fix: fixed the Remote popup height calculation
  • …and 30 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

exelban/stats was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 22 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit ef3146cfccc79f4993d6f6a1520b2701106a4957 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-d1b85ed16f44.