Skip to content
CAI
Software that uses CAICheck a score

okwasniewski/MiniSim

63.0

Adequate · 30 September 2026

4.8k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

MiniSim is a macOS utility application designed to manage and interact with both iOS simulators and Android emulators. It provides a unified interface for launching, focusing, and executing commands on devices, including ADB integration for Android tasks like logcat viewing and file uploads. The system supports extensive customization through configurable terminal emulators, custom command parameters, and accessibility features, all wrapped in a guided onboarding experience.

Features

Add About, Preferences, and Onboarding UI views

The application now includes dedicated SwiftUI views for the About screen, Preferences, and device parameters, along with supporting view modifiers. Users can access an About page that displays the app version, provides a button to check for updates via Sparkle, and opens a list of third-party acknowledgements. The Preferences view allows users to customize the menu bar icon, select a preferred terminal emulator from a list of available options, configure a global hotkey, clear the application cache, and toggle the 'Launch at login' setting. Additionally, new view modifiers support the styling of description text and onboarding containers.

MiniSim/Views · high confidence

Add Android launch parameter management

Users can now manage additional Android launch parameters (such as cold boot or audio settings) via a new table view. This feature allows adding, editing, deleting, and enabling/disabling custom command-line arguments, with all changes persisted to local storage.

MiniSim/Views/ParametersTable · high confidence

AppleScript automation and accessibility integration

MiniSim now exposes an AppleScript suite (defined in MiniSim.sdef) allowing external scripts to discover devices, launch them, and execute custom commands, while a new AccessibilityElement class enables the app to programmatically focus device windows using macOS Accessibility APIs.

MiniSim · high confidence

Introduce guided onboarding flow for simulator setup and permissions

Users now encounter a multi-step onboarding experience upon first launch, starting with a welcome screen that highlights key features. The flow guides users through configuring tooling preferences (enabling or disabling iOS/Android simulators), validating their environment setup (checking Xcode and Android Studio installations), and requesting necessary system permissions for Accessibility and Notifications. This ensures the app is correctly configured before the user begins managing simulators.

MiniSim/Views/Onboarding · high confidence

New utility extensions and configuration support for MiniSim

This change introduces a suite of new Swift extensions to support MiniSim's core functionality and user settings. It adds configuration storage for user preferences, including toggles for iOS/Android simulators, custom commands, terminal selection, and menu icon choices, via UserDefaults. It also provides UI helpers for displaying alerts and notifications, defines keyboard shortcuts for toggling the app, and establishes menu item construction logic with specific icons for different device types (iPhone, iPad, etc.). Additionally, it includes utility extensions for safe collection access, thread assertion in debug builds, and pasteboard operations.

MiniSim/Extensions · high confidence

Support for WezTerm and configurable terminal selection

The application now supports launching commands in WezTerm in addition to the existing Apple Terminal and iTerm options. Users can select their preferred terminal emulator via settings, and the system will automatically use that choice (falling back to the default Apple Terminal if the preferred one is unavailable or not set). This change introduces the backend service logic and app-specific launch scripts required to integrate WezTerm into the existing terminal selection workflow.

MiniSim/Service/Terminal · high confidence

Removals

Removal of legacy macOS status bar controller

The \StatusBarController.swift\ file, which previously managed the macOS menu bar status item and its associated device selection menu, has been removed from the MiniSim application. This change eliminates the legacy UI component responsible for displaying iOS simulators and Android emulators in the system status bar, indicating a shift away from this specific interaction model.

MiniSim/MenuBar · high confidence

Behavioural changes

Redesigned device menu with Android support and new management actions

The device selection menu has been restructured to explicitly separate iOS and Android devices into physical and virtual sections. This change introduces new context menu actions for Android emulators, including the ability to delete them and launch logcat. Additionally, users can now upload files and folders to device internal storage and open local device directories in Finder, alongside existing actions like copying device names/IDs, cold booting, and toggling accessibility.

MiniSim/MenuItems · high confidence

Rewritten device service with unified action execution and Android support

The device management service has been completely rewritten to support both iOS and Android platforms. Device discovery now uses JSON output from \xcrun\ for iOS and \adb\/\emulator\ for Android, parsing results into a unified \Device\ model. A new \ActionExecutor\ and factory pattern (\ActionFactory\) handle user commands (launch, delete, copy ID/name, custom commands, upload, logcat, accessibility toggles) via a concurrent dispatch queue to prevent UI freezing. Android-specific capabilities include ADB integration for text input, file uploads to the Downloads folder, logcat viewing, and accessibility service toggling. iOS physical devices are now supported via \xcrun devicectl\. The service also introduces a \focusDevice\ capability using macOS Accessibility APIs to bring the correct simulator or emulator window to the foreground.

MiniSim/Service · high confidence

Skip Xcode macro and plugin fingerprint validation in CI

The CI post-clone script now disables Xcode's macro and package plugin fingerprint validation checks. This prevents build failures or delays in the CI environment caused by strict validation of Swift macros and package plugins during the clone phase.

_ci\scripts · high confidence

Updated app icon filenames and added new asset sets

The MiniSim app icon filenames have been corrected to follow standard naming conventions (e.g., renaming 'Icon-32.png' to '32.png' and 'Icon-1024.png' to '[e-mail redacted]') to ensure proper rendering on macOS. Additionally, new asset sets were added to support the application's UI, including icons for Xcode and Android Studio, device representations for iPhone and iPad, a success action indicator, and a generic box icon.

MiniSim/Assets.xcassets · high confidence

Xcode project restructured with new source files and test targets

The MiniSim project configuration has been significantly updated to include a large number of new source files and test targets. This includes additions for onboarding and setup views (SetupView, OnboardingPager), custom command forms, device parsing and discovery services, and accessibility utilities. Several existing files have been renamed or replaced, such as StatusBarController.swift becoming MiniSim.swift. The project now also includes dedicated test targets for device parsing, ADB, and user defaults, and the scheme has been updated to run these tests. The workspace reference has been simplified to use a relative path.

MiniSim.xcodeproj · high confidence

Test coverage

Added unit tests for MiniSim core components

Added comprehensive unit tests for the MiniSim application, covering device discovery and parsing for both iOS and Android platforms, ADB and accessibility interactions, custom command execution, file upload handling, and various utility functions such as shell escaping and string matching.

MiniSimTests · high confidence

Dependencies

Initial Swift Package Manager dependency resolution

The project now includes a Package.resolved file that pins the versions of all Swift Package Manager dependencies used by MiniSim. This ensures reproducible builds by locking specific versions for libraries such as AcknowList (3.2.0), CodeEditor (1.2.6), CryptoSwift (1.8.3), Highlightr (3.0.2), KeyboardShortcuts, LaunchAtLogin, Settings, ShellOut (2.3.0), SourceKitten (0.35.0), Sparkle (2.6.4), swift-argument-parser (1.5.0), swift-syntax (600.0.0-prerelease-2024-08-14), SwiftLint (0.56.2), SwiftyTextTable (0.9.0), SWXMLHash (7.0.2), SymbolPicker (1.5.3), and Yams (5.1.3).

(dependencies) · 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

Score

  • CAI 64 → 63 (-1.1)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 99 → 99 (+0.0)
  • Architecture 91 → 93 (+2.2)
  • Maturity 51 → 51 (+0.0)
  • Readiness 54 → 52 (-2.2)
  • Security 97 → 97 (+0.0)

Resolved (1)

  • Documentation: no architecture or design documentation (README.md)

New (13)

  • Documentation: no project overview (README.md)
  • Floating branch dependency: keyboardshortcuts
  • Floating branch dependency: launchatlogin
  • Floating branch dependency: settings
  • Outdated: acknowlist
  • Outdated: cryptoswift
  • Outdated: sourcekitten
  • Outdated: sparkle
  • Outdated: swift-argument-parser
  • Outdated: swift-syntax
  • Outdated: swiftlint
  • Outdated: symbolpicker
  • Outdated: yams

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

Survey your own repository

okwasniewski/MiniSim 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 30 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 bb9deb199adf9d88350f4dbc6349c4ff39fdd1a4 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.