dungngminh/simutil
67.6
Adequate · 19 September 2026
5.6k
lines of production code
Dart
primary language
1
measurement over time
What this system is
SimUtil is a cross-platform terminal user interface for managing Android emulators and iOS simulators. It provides core capabilities for device discovery, control, and wireless ADB pairing, alongside integrated logcat viewing and Xcode cache management. The system features an extensible plugin architecture that allows users to define custom shell commands, all presented through a keyboard-navigable, themeable CLI.
Features
Add keyboard-driven plugin and command selection dialogs
Users can now navigate and select plugins or commands via a keyboard-focused overlay menu. This change introduces \PluginMenuDialog\ and \CommandMenuDialog\ components, along with a shared \MenuOptionRow\ for displaying labels, descriptions, and shortcuts. The dialogs support arrow key navigation, Enter to select, and Escape to cancel, providing a consistent interface for interacting with the plugin registry.
lib/plugins/registry · high confidence
Add logcat viewing and filtering for Android devices
Users can now view and filter Android logcat output directly within the application. This change introduces a new dialog component that streams logcat data from connected Android devices via ADB, featuring a filter bar with quick-select options for log levels (error, crash, warn, info, debug, verbose) and support for custom text filtering. The implementation includes helper logic to parse log levels, detect crashes, and extract file paths from log lines for easy navigation.
lib/plugins/logcat · high confidence
Automated changelog data generation
The application now includes a build tool that automatically parses the project's CHANGELOG.md file and generates a corresponding Dart source file (lib/data/changelog\_entries.dart) containing structured version history. This ensures that the changelog data used by the application remains synchronized with the documentation without requiring manual updates to the codebase.
lib/data, tool · high confidence
Initial release of SimUtil terminal UI components and CLI structure
This change introduces the foundational user interface and command-line structure for SimUtil, a terminal-based tool for managing Android emulators and iOS simulators. It adds a suite of reusable TUI components including device lists, detail panels, and various overlay dialogs (welcome, changelog, confirmation, error, success, input, and PIN code entry) to handle user interaction. The release also establishes the CLI command runner with a base command class and a version command, alongside a theming system that supports multiple color palettes (light, dark, nord, dracula, catppuccin, gruvbox) to customize the application's appearance.
lib/components · high confidence
Introduce Xcode Tools dialog and restructure application entry point
Users can now access a new Xcode Tools dialog to manage Xcode-specific tasks, such as clearing Derived Data, via a keyboard-navigable interface. This change also restructures the application's main entry point by replacing the previous \simutil.dart\ file with a new \simutil\_app.dart\ that initializes the service locator, loads settings, manages device discovery for Android and iOS, and handles first-run and changelog dialogs.
lib · high confidence
Introduce unified device management and extensible plugin system
This change establishes the core service layer for the application, introducing \AndroidDeviceService\ and \IOSDeviceService\ to handle device discovery and control via ADB and simctl respectively, including support for physical Android devices and iOS simulators. It adds a new YAML-based plugin registry (\PluginRegistryService\) that allows users to define custom shell-command plugins in \\~/.simutil/settings.yaml\, supporting argument templating, platform filtering, and shortcut execution. Additionally, it implements \MdnsWifiDiscoveryService\ for wireless device pairing via mDNS, \XcodeCacheService\ for managing Xcode Derived Data, and an \IsolateRunner\ to ensure long-running commands do not block the main UI thread.
lib/services · high confidence
New ADB wireless pairing and connection dialogs
Added new UI components for managing ADB wireless connections, including a main selection dialog offering options to connect via IP, pair using a pairing code, or pair using a QR code. The implementation introduces a wireless pairing dialog that discovers devices via mDNS, allows manual entry of host/port, and handles 6-digit PIN code submission, alongside a dedicated QR code display dialog for simplified pairing flows.
_lib/plugins/adb\tools · high confidence
New utility extensions and version constant added
The lib/utils directory now includes several new helper utilities: a version constant (0.8.1) in version.dart, duration constants for reload intervals in constant.dart, and new Dart extensions for formatting integers as human-readable byte sizes (int\_extension.dart), mapping iterables with index tracking (iterable\_extension.dart), and capitalizing strings (string\_extension.dart).
lib/utils · high confidence
Project initialization and documentation overhaul
The repository has been initialized with the core \simutil\ application, including a cross-platform terminal UI for managing Android emulators and iOS simulators. This change introduces the MIT license, a new \AGENTS.md\ file detailing the Nocterm-based stack and service architecture, and a comprehensive \CHANGELOG.md\ tracking versions from 0.0.1 to 0.8.1. It also adds platform-specific installation scripts (\install.sh\ for Unix-like systems and \install.ps1\ for Windows) that fetch and configure the binary, alongside a significantly expanded \README.md\ with feature lists, installation instructions, and platform support matrices. Additionally, the \analysis\_options.yaml\ has been updated to enforce stricter linting rules and exclude generated files.
(repo-wide) · high confidence
Behavioural changes
Enhanced terminal state management for Linux and macOS
The CLI entry point now implements a supervisor process on Linux and macOS to better manage terminal state. It captures the terminal settings before launching the TUI, forwards signals (SIGINT, SIGHUP, SIGTERM, SIGWINCH) to the child process, and restores the original terminal state upon exit, which improves reliability when using the tool over SSH or in complex terminal environments.
bin · high confidence
Test coverage
Added tests for changelog data retrieval and parsing tool; Added unit tests for core model classes; Initial test coverage for core services and utilities; Removal of simutil test suite.
Dependencies
Simutil v0.8.1 release with new dependencies and build tooling
The Simutil application has been updated to version 0.8.1, introducing several new direct dependencies including \args\, \mason\_logger\, \multicast\_dns\, \process\_run\, \ascii\_qr\, and \yaml\, while upgrading \nocterm\ to ^0.8.0. The project now includes dev dependencies for code generation and testing (\build\_runner\, \build\_version\, \mocktail\) and configures \simutil\ as the executable entry point.
(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
Baseline
- First survey — no prior run to compare against. CAI 68.
Lenses
- Code Health 95
- Architecture 99
- Maturity 75
- Readiness 58
- Security 64
- Domain Modelling 100
Changes since last survey
- 58 commits — 51 feature/other, 7 fixes
By area
- (root) — 28 commits
- .github/workflows — 9 commits
- lib/components — 9 commits
- lib/services — 6 commits
- .github/ISSUE_TEMPLATE — 2 commits
- art/simutil.png — 1 commit
- docs/ai — 1 commit
- lib/plugins — 1 commit
- test/models — 1 commit
Notable commits
- fix: Fix Linux ADB discovery and SSH terminal restore (#32)
- fix: Fix incorrect way to terminate app (#21)
- fix: Fix refresh hang when device discovery returns empty results (#28)
- fix: feature: add linter and quick fix all
- fix: fix: fail clearly when Derived Data home is missing (#40)
- fix: fix: ios devices are still visible but states are unavailable (#14)
- fix: fix: wrong focus when initializing app (#8)
- change: Add GitHub stars badge to README
- change: Add Windows PowerShell installer for simutil (#22)
- change: Bump: release 0.6.1
- change: Enhance README with image and project details
- change: Improve theme in panel and dialog (#13)
- change: Integrate logcat for launching Android emulators/devices (#18)
- change: Update README.md
- change: Update Windows support status in README
- change: Update installation instructions in README
- change: Upload showcase gif
- change: Upload simutil logo
- change: bump: version 0.7.0
- change: chore: add showcase video demo (#1)
- …and 38 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
dungngminh/simutil 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 19 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 39803e208cee80da8d5b9d501b197390c0b71858 — 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-13a154b7f5d1.