lycorp-jp/sim-use
59.8
Adequate · 1 October 2026
36.1k
lines of production code
Swift
with Kotlin
2
measurements over time
What this system is
sim-use is a cross-platform command-line interface for controlling iOS simulators, Android emulators, and physical iOS devices. It provides unified commands for UI inspection via accessibility trees, input simulation such as taps and swipes, and media capture including video recording and streaming. The system features a background daemon for performance, a web-based viewer for visual debugging, and an integrated evaluation framework for automated testing.
Features
Add support for controlling physical iOS devices via the accessibility audit daemon
This change introduces a new backend for physical iOS devices in the \ios-device\ command set, enabling users to interact with connected devices over USB using the \com.apple.accessibility.axAuditDaemon.remoteserver\ service. The implementation includes a DTX transport layer, an accessibility client for querying element hierarchies and performing actions (such as tapping), and a screenshot capture mechanism that leverages \xcrun devicectl\ for CoreDevice capabilities. Users can now list physical devices, browse the UI element tree, and execute interactions on development-signed apps without requiring a Developer Disk Image.
Sources/iOSDeviceBackend · high confidence
Android playground fixture for E2E testing
A new Android application fixture has been added to the Playgrounds directory to support sim-use end-to-end test suites. This single-activity app provides a menu of interactive screens—including tap, swipe, scroll, text input, multi-touch, and button tests—each exposing stable UI identifiers and plain-text echo labels so that automated commands can drive interactions and assert the resulting UI state.
Playgrounds/Android · high confidence
Initial Android accessibility tree normalizer and selector pipeline
This change introduces the Android-side implementation of the cross-platform accessibility normalizer, bringing Android in line with the existing iOS pipeline. The new \AndroidClassifier\ maps Android UI components to a shared role vocabulary (e.g., \RecyclerView\ to \List\, \Switch\ to \Switch\) and generates consistent state tags (like \selected\, \checked\, \value\) to ensure the outline format is platform-agnostic. \AndroidOutlineRenderer\ structures the accessibility tree into a unified outline with region headers and aliases, while \AndroidListDetector\ identifies list structures for scoped navigation. Additionally, \AndroidSelector\ provides the command-line interface for targeting elements by label, ID, or value, and \AndroidCrashDialogDetector\ adds robust handling for system crash dialogs using stable resource IDs. This establishes a consistent, cross-platform foundation for UI description and interaction on Android.
Sources/AndroidBackend/Normalizer · high confidence
Initial Android backend support for sim-use
This change introduces the complete Android backend implementation for the sim-use CLI, adding the \sim-use android\ command namespace and its subcommands (init, devices, describe-ui, ping, tap, swipe, gesture, multi-touch, paste, keyboard-state, button, screenshot, record-video, stream-video, and type). It provides cross-platform parity with iOS by routing top-level verbs to Android-specific implementations, including device initialization, UI inspection, input simulation, clipboard operations, and video recording (MP4/GIF).
Sources/AndroidBackend/Verbs · high confidence
Initial public release of sim-use
This entry marks the initial public release of the sim-use CLI, introducing cross-platform control for iOS simulators and Android emulators. Key capabilities include \describe-ui\ for accessibility tree inspection, \tap\/\swipe\/\type\ for interaction, and \record-video\/\stream-video\ for media capture. The tool supports both simulator and physical iOS devices (via \ios-device\ verbs) and Android devices, with unified top-level commands routing to the appropriate backend. It includes a bundled agent skill, a Viewer SPA for visual inspection, and comprehensive E2E testing infrastructure.
(repo-wide) · high confidence
Initial public release of sim-use skill and evaluation framework
This release introduces the \sim-use\ skill, which provides a CLI and preflight check to manage and interact with iOS simulators and Android devices, including automatic device detection, version compatibility checks, and UI content validation. Alongside the skill, an end-to-end evaluation framework is added, featuring a headless agent runner that invokes the skill via the Claude CLI and a device abstraction layer to verify UI states and screenshots, enabling automated confidence testing for the skill's capabilities.
python · high confidence
Initial public release of the Android ADB backend
This change introduces the core Android backend components for the \sim-use\ tool, enabling direct interaction with Android devices via the ADB CLI. The new \Adb\ struct provides a thread-safe, value-type wrapper for executing ADB commands (such as device listing, port forwarding, and shell execution) with robust process management to prevent pipe deadlocks. It includes \AdbStreamingProcess\ for handling long-running binary streams, specifically to capture real-time H.264 video from \adb exec-out screenrecord\. Additionally, \AndroidProcessLister\ implements app liveness tracking by parsing process states and filtering system packages, while \AuthTokenFetcher\ handles the bootstrap sequence by retrieving bridge authentication tokens via Android ContentProviders.
Sources/AndroidBackend/Adb · high confidence
Initial public release of the sim-use Android bridge
This change introduces the \sim-use-device-bridge\, a Kotlin Android application that runs an in-process AccessibilityService and HTTP server on the device, allowing the host \sim-use\ CLI to control the device via \adb forward\. The bridge exposes endpoints for taking screenshots, interacting with the UI via gestures (tap, swipe, complex gestures), sending keyboard input and key events, pasting text, and retrieving the full accessibility tree. It includes a Bearer-token authentication mechanism, a keep-alive foreground service to prevent process killing, and a ContentProvider for initialization. The accessibility tree retrieval is optimized with parallel ForkJoinPool execution to reduce latency, and the HTTP server is bound to localhost for security.
app, bridge · high confidence
Initial public release of the sim-use CLI
This release introduces the \sim-use\ command-line interface, providing a unified, cross-platform tool for interacting with iOS Simulators, Android emulators, and physical iOS devices. The CLI includes commands for listing connected devices (\devices\), inspecting the UI hierarchy (\describe-ui\ / \ui\), performing gestures (\gesture\), pressing hardware buttons (\button\), and managing app state and crash detection (\app-state\). It also features a background daemon (\daemon\) to improve performance for repeated interactions, an \init\ command to install AI-client skill files, and support for JSON output across all verbs for scripting and automation.
Sources/SimUse/Commands · high confidence
Initial public release of the sim-use daemon client and server
This change introduces the core \sim-use\ daemon infrastructure, including the \DaemonClient\ for managing per-UDID daemon lifecycles (spawn, connect, retry on transient booting, and version compatibility checks), the \DaemonServer\ for handling Unix-domain socket connections with serial request processing, and the \DaemonDispatch\ module for routing commands to platform-specific handlers. It also adds the \DaemonProtocol\ defining the line-delimited JSON wire format and error classification, along with \DaemonSocket\ for low-level BSD socket operations. This enables the CLI to offload simulator interactions to a long-running background process, improving reliability and performance for commands like \describe-ui\.
Sources/SimUseCore/Daemon · high confidence
Initial release of sim-use iOS Simulator backend
The sim-use tool now includes an iOS Simulator backend, allowing users to manage iOS simulators via the \sim-use ios \<verb\>\ command structure. This change introduces the \iOSSimBackend\ module, which mirrors the existing Android backend architecture, and adds placeholder resource directories for both Android and iOS to support future resource integration.
Sources/AndroidBackend/Resources, Sources/SimUse/Resources, Sources/iOSSimBackend · high confidence
Initial release of the Android Bridge client library
This change introduces the \sim-use\ Android Bridge client, a new Swift module that enables the CLI to communicate with the on-device bridge APK. It provides a thread-safe \BridgeClient\ for executing device actions (tap, swipe, accessibility tree fetch) over an \adb forward\ tunnel, complete with automatic authentication token caching, protocol version verification, and session persistence to disk. The release also includes the \BridgeClientRegistry\ for managing client lifecycles, structured wire-format models for accessibility nodes and gestures, and robust error handling with actionable user hints for common bootstrap failures.
Sources/AndroidBackend/Bridge · high confidence
Initial release of the sim-use Viewer tool
A new local web application is now available to visualize the accessibility tree exposed by running simulators. Users can launch it via \sim-use viewer\ to see UI elements rendered on a scaled SVG canvas, allowing them to inspect which elements are actually accessible side-by-side with the live simulator. The tool supports selecting devices, auto-sampling snapshots at configurable intervals, and replaying taps on specific accessibility nodes. It also provides visual conventions to distinguish elements with unique IDs, blind spots, disabled states, and selected states, along with an outline pane for navigation and filtering.
Tools, Tools/Viewer · high confidence
Introduce Viewer as a local web-based device simulator interface
The Viewer component now provides a local HTTP server (bound to loopback only) that serves a Vite-built Single Page Application for interacting with iOS simulators. This new capability includes a minimal HTTP/1.1 parser and server implementation, API handlers that shell out to the \sim-use\ binary to manage devices, capture UI snapshots (including orientation data), and simulate taps, and static file serving for the SPA. The API enforces \--no-physical-ios\ to restrict operation to simulators and uses \--no-raw\ for snapshot requests to optimize performance. Device identification is standardized to the \deviceId\ field, with backward compatibility for the legacy \udid\ key in API queries.
Sources/SimUse/Viewer · high confidence
Introduce cross-platform device listing, explicit coordinate spaces, and crash-dialog detection
This release adds a unified \Device\ model for the \sim-use devices\ command, consolidating iOS simulators, Android emulators, and physical iOS devices into a single schema with a new \kind\ field (simulator, emulator, physical) and migrating the identifier key from \udid\ to \deviceId\. It introduces an opt-in \--coordinate-space ui\ mode that transforms gesture coordinates through orientation calibration, ensuring taps and swipes remain accurate when the device is rotated. Additionally, \describe-ui\ now detects Android app-crash dialogs (the system "keeps stopping" overlay) and surfaces them as a \crashDialog\ signal in the JSON output and a banner in the text outline, while also supporting full-screen tap advisories for batch operations.
Sources/SimUseCore · high confidence
Introduces core type definitions and command execution protocol for sim-use
This change establishes the foundational types and execution model for the sim-use tool. It defines \CommandOutput\ to standardize how command results (stdout/stderr) are formatted and emitted, ensuring consistent output whether running locally or via a daemon. It introduces \SimUseExecutableCommand\, a protocol that separates command execution from output formatting, enabling the same command logic to be used both in-process and over a daemon wire protocol. New error types (\CLIError\, \PhysicalIOSDeviceError\, \TargetCapabilityError\) provide structured, user-friendly error messages with actionable hints, particularly for distinguishing between simulator and physical device usage or unsupported capabilities on specific targets.
Sources/SimUseCore/Types · high confidence
New agent-eval E2E suite for sim-use skill verification
Added a new agent-eval testing layer in e2e/agent-evals that exercises the bundled sim-use skill against the Playground fixture apps on iOS and Android. The suite uses a headless agent (claude -p) to perform natural-language tasks, with deterministic post-condition checks (verifying UI state, transcripts, and file artifacts) to decide PASS/FAIL. It includes a runner (run.py), framework modules for device reset, verification, and reporting, and a set of platform-specific test cases (e.g., tap, scroll, paste fallback, unicode input) tagged for quick smoke or release gates. The runner supports pinning a specific sim-use binary, filtering by tags or case IDs, and auto-resolving devices by deviceId.
e2e · high confidence
New build, release, and testing automation scripts
The repository now includes a comprehensive suite of shell scripts to streamline the development and distribution workflow. \scripts/build.sh\ and \scripts/build-bridge.sh\ handle building the IDB XCFrameworks and the Android device-bridge APK, while \scripts/build-viewer.sh\ assembles the embedded Viewer SPA. For distribution, \scripts/local-release.sh\ and \scripts/dev-install.sh\ manage the creation of notarized tarballs, Homebrew formula generation, and local binary installation. Testing is supported by \scripts/e2e-matrix.sh\ for running iOS E2E suites across Xcode 26/27 and Device Hub configurations, \scripts/benchmark\_batch.sh\ for performance comparison, and \scripts/eval.sh\ for agent-eval runs. Additional utilities include \scripts/check-protocol-parity.sh\ to enforce protocol version consistency between Kotlin and Swift, and \scripts/add-spdx-headers.sh\ for license header management.
scripts · high confidence
New iOS and Android playground apps for sim-use E2E testing
Added new standalone playground applications for iOS (SimUsePlayground) and Android (using Gradle 8.7) to facilitate end-to-end testing of sim-use capabilities. The iOS app provides a suite of test screens for touch and gesture detection (including pinch, rotate, and tap calibration), text input and paste operations, hardware button simulation, key press and sequence detection, orientation changes, and system permission prompts. The Android playground is scaffolded with a Gradle wrapper to support similar testing infrastructure on the Android platform.
Playgrounds · high confidence
New iOS batch verb for executing ordered interaction steps
Adds the \sim-use ios batch\ command, allowing users to execute a sequence of interaction steps (tap, swipe, gesture, type, paste, button, key, key-sequence, key-combo, and sleep) in a single invocation. This reduces overhead by sharing one iOS HID session across all steps. The command supports reading steps from inline arguments, a file, or stdin, and includes options for accessibility snapshot caching (\--ax-cache\), type submission modes, and error handling (\--continue-on-error\). It also introduces orientation-aware calibration for UI-space coordinates and surfaces advisories (e.g., when screen orientation is undetermined) in the JSON output.
Sources/iOSSimBackend/Verbs · high confidence
New utility modules for iOS video capture, input parsing, and performance logging
This change introduces several new utility components in the iOS simulator backend: AnnexBPipelineConsumer and StdoutStreamConsumer bridge idb's byte-stream protocol to video muxing and streaming sinks, ensuring proper backpressure and interruptibility; H264CaptureConfiguration centralizes H.264 encoder settings for record-video and stream-video commands; HIDKeycodeParsing provides strict comma-separated integer parsing for HID-keyed verbs; ShellTokenizer handles batch-step command parsing with quote and escape support; PerfLog adds opt-in performance instrumentation via the SIM\_USE\_PERF environment variable; StandardErrorStream provides a clean stderr output stream; and VideoFrameUtilities+Simulator adds a platform-specific screenshot capture method.
Sources/iOSSimBackend/Util · high confidence
New video recording pipeline with MP4 and animated GIF export
The \SimUseVideo\ module now provides a unified video recording capability for both iOS and Android, outputting to MP4 or animated GIF formats. The system parses raw H.264 Annex-B streams into access units and muxes them into MP4 files via \H264PassthroughRecorder\ or streams them as MPEG-TS via \MPEGTSStreamWriter\. For GIF exports, the \GIFTranscoder\ post-processes the recorded MP4, sampling frames at a specified FPS and optionally bracketing the animation with START/END marker cards. The pipeline handles platform-specific capture sources, manages timing discontinuities for live previews, and ensures transport stream conformance for stable playback.
Sources/SimUseVideo · high confidence
Behavioural changes
Automatic DCO sign-off in commit messages
The repository now includes a prepare-commit-msg hook that automatically appends a Signed-off-by line to commit messages when missing, eliminating the need to manually use the -s flag. This ensures Developer Certificate of Origin compliance by inserting the configured user name and email, while skipping merges, squashes, or messages that already contain the sign-off.
.githooks · high confidence
Centralized CLI option groups for device, touch, and output flags
The command-line interface now uses shared \OptionGroup\ structs to standardize flag definitions and validation across iOS and Android commands. Device selection is unified via \DeviceOptions\ (with an \AndroidDeviceOptions\ variant that prevents accidental iOS simulator fallback) and rejects physical iOS UDIDs in simulator-only contexts. Tap, long-press, and swipe commands now share centralized options for multi-touch (\--fingers\, \--x2\/\--y2\, \--finger-distance\), swipe coordinates (positional pairs, \--from\/\--to\, and legacy \--start\/\--end\ flags), and tap targeting (accessibility selectors like \--id\/\--label\, \--frame\ filtering, and \--coordinate-space\). Output consistency is improved by a shared \--json\ flag, while tap timing is standardized with \--pre-delay\, \--post-delay\, \--wait-timeout\, and \--poll-interval\. This consolidation ensures consistent help text, default behaviors, and validation rules across the entire tool surface.
Sources/SimUseCore/Options · high confidence
Fixes stale version stamping in SPM build cache
The VersionPlugin now correctly invalidates its build cache when source files change or when the SIM\_USE\_VERSION environment variable is modified. Previously, the plugin declared no input files, causing the generated Version.swift to freeze at the version seen during the first build and ignoring subsequent code changes or override settings. By explicitly listing target source files as inputs and baking the SIM\_USE\_VERSION override into the command arguments, the plugin ensures the version stamp stays current with the codebase and configuration.
Plugins/VersionPlugin · high confidence
Improved accessibility coordinate accuracy and orientation handling
The accessibility backend now correctly handles device orientation and display scaling, ensuring that taps, swipes, and point queries land on the intended UI elements. This change introduces orientation calibration to map UI-space coordinates to the native framebuffer space, fixing issues where interactions failed on rotated devices or display-downscaled models (like the iPhone mini). It also adds a retry mechanism to recover the accessibility tree when the frontmost app reports an empty shell (e.g., during system document pickers) and introduces a full-screen tap advisory to warn users when a selector matches a large wrapper element instead of a specific control.
Sources/iOSSimBackend/A11y · high confidence
Improved accessibility outline formatting and list detection
The iOS simulator backend now provides more accurate accessibility outlines by introducing a new list detection algorithm that identifies list-like clusters using height and row-shape heuristics, and by ensuring that \TextArea\, \Slider\, and \Button\ elements correctly surface their \value\ attributes in the output. Additionally, the outline formatter now supports orientation tagging in the app header and reconciles the app label with the foreground bundle ID to prevent stale or incorrect app identification.
Sources/iOSSimBackend/Normalizer · high confidence
Improved simulator stability and Xcode 27 compatibility
The simulator backend now prevents command-line deadlocks by draining stdout and stderr during simctl operations and enforcing a 5-second timeout on launchctl spawns, ensuring that transient simulator boot issues do not hang the tool. It also adds explicit compatibility checks for Xcode 27, detecting the relocation of SimulatorKit.framework to SharedFrameworks and providing actionable error messages if the framework is missing. Additionally, the device listing command now includes physical iOS devices alongside simulators and presents runtime versions in a user-friendly format.
Sources/iOSSimBackend/Sim · high confidence
Restructured command surface with cross-platform verbs and Android support
The \sim-use\ CLI now exposes a unified set of top-level commands (such as \tap\, \type\, \screenshot\, and \stream-video\) that work across both iOS and Android platforms, replacing the previous iOS-only top-level structure. iOS-specific actions like \key\ and \batch\ have been moved under the \ios\ namespace (e.g., \sim-use ios key\), and the tool now includes an \AndroidCommand\ subcommand to interact with Android emulators and devices. A compatibility layer automatically redirects legacy top-level iOS verb invocations to their new \ios\-prefixed paths to prevent errors.
Sources/SimUse · high confidence
Symlinked skills directory structure
The .claude/skills path is now a symbolic link pointing to ../.agents/skills, establishing a directory structure where skills are managed in the .agents folder but accessed via the .claude directory.
.claude · high confidence
Fixes
Fix debug logging coverage and add Android HID error guidance
The \SIM\_USE\_DEBUG=1\ environment variable now reliably enables debug-level output and stderr logging across all code paths, including those that previously ignored the flag due to local verbosity settings, ensuring diagnostic messages are visible in the field. Additionally, a new error message is surfaced when iOS-specific HID key commands (like \key\, \key-sequence\, or \key-combo\) are incorrectly invoked against an Android device, guiding users to the appropriate Android-native equivalents (\button\, \type\, \paste\).
Sources/iOSSimBackend/Types · high confidence
HID input reliability fixes for simulator reboots and transport selection races
This change introduces robustness improvements to the simulator HID input backend. It prevents cached HID connections from being reused after a simulator reboot by gating reuse on the \launchd\_sim\ process identity, avoiding hangs or silent input drops when the underlying Mach port is dead. It also stops pinning the HID transport selection during the first 15 seconds after boot, ensuring the correct transport is chosen once the \dtuhidd\ daemon has attached. Additionally, a send deadline is enforced to fail loudly if a HID operation hangs indefinitely, and a recovery mechanism automatically rebuilds the session on dead-transport errors.
Sources/iOSSimBackend/HID · high confidence
Test coverage
Added comprehensive test coverage for the Android backend; Expanded test coverage for accessibility, Android E2E, and video subsystems; Initial test coverage for SimUseCore core components.
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 61 → 60 (-1.2)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 56 → 56 (+0.0)
- Architecture 99 → 93 (-6.2)
- Maturity 73 → 73 (+0.0)
- Readiness 65 → 59 (-6.0)
- Security 80 → 88 (+7.8)
- Accessibility 56 → 56 (+0.0)
- Performance 79 (new)
Resolved (15)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no architecture or design documentation (docs/ai/xxxx-e2e-confidence-suite/README.md)
- High CVE: [GHSA redacted] (Tools/Viewer/package-lock.json)
- Hotspot: Playgrounds/iOS/SimUsePlayground/Views/KeyPressView.swift (Playgrounds/iOS/SimUsePlayground/Views/KeyPressView.swift)
- Hotspot: Sources/AndroidBackend/Normalizer/AndroidSelector.swift (Sources/AndroidBackend/Normalizer/AndroidSelector.swift)
- Hotspot: Sources/SimUseCore/OutlineAliasResolver.swift (Sources/SimUseCore/OutlineAliasResolver.swift)
- Hotspot: Sources/SimUseCore/PlatformRouter.swift (Sources/SimUseCore/PlatformRouter.swift)
- Hotspot: Sources/iOSSimBackend/A11y/AccessibilityFetcher.swift (Sources/iOSSimBackend/A11y/AccessibilityFetcher.swift)
- Hotspot: Sources/iOSSimBackend/A11y/AccessibilityTargetResolver.swift (Sources/iOSSimBackend/A11y/AccessibilityTargetResolver.swift)
- Hotspot: Sources/iOSSimBackend/Verbs/IOSSimPasteCommand.swift (Sources/iOSSimBackend/Verbs/IOSSimPasteCommand.swift)
- Hotspot: Tools/Viewer/src/App.tsx (Tools/Viewer/src/App.tsx)
- Repeated repair: Sources/SimUseCore/Daemon/DaemonClient.swift (Sources/SimUseCore/Daemon/DaemonClient.swift)
- Repeated repair: Sources/SimUseCore/Daemon/DaemonServer.swift (Sources/SimUseCore/Daemon/DaemonServer.swift)
- Repeated repair: Sources/iOSSimBackend/HID/HIDBootIdentity.swift (Sources/iOSSimBackend/HID/HIDBootIdentity.swift)
- Repeated repair: Sources/iOSSimBackend/HID/HIDSendDeadline.swift (Sources/iOSSimBackend/HID/HIDSendDeadline.swift)
New (24)
- Ambiguous naming for similar operations. Both methods return AppSnapshot? and take identical arguments. It is unclear if 'liveness' implies a different filtering logic (e.g., only running processes) or a different data structure compared to 'appSnapshot'. If they return the same type with the same intent, they are redundant. If they differ, the naming does not clearly convey the distinction.
- AndroidSelectorError.errorDescription (cognitive 19) (Sources/AndroidBackend/Normalizer/AndroidSelector.swift)
- Coverage not measured — Swift suite
- Duplicated block (10–11 lines × 6) (Playgrounds/iOS/SimUsePlayground/Views/ButtonTestView.swift)
- Duplicated block (13 lines × 2) (Playgrounds/iOS/SimUsePlayground/Views/TapTestView.swift)
- Duplicated block (14 lines × 2) (Playgrounds/iOS/SimUsePlayground/Views/TapTestView.swift)
- Duplicated block (15 lines × 4) (Playgrounds/iOS/SimUsePlayground/Views/PasteTestView.swift)
- Duplicated block (17 lines × 2) (Playgrounds/iOS/SimUsePlayground/Views/ButtonTestView.swift)
- Duplicated block (5 lines × 2) (Playgrounds/iOS/SimUsePlayground/Views/TapTestView.swift)
- Duplicated block (8 lines × 2) (Sources/iOSSimBackend/HID/KeyCode.swift)
- GesturePresetsView.body (cognitive 17) (Playgrounds/iOS/SimUsePlayground/Views/GesturePresetsView.swift)
- Inconsistent parameter handling in registry methods. shared requires both udid (implied by 'for') and adb. invalidate takes only a String (likely udid), while reset takes no arguments. This suggests BridgeClientRegistry might be holding state about adb instances or connections that isn't consistently managed across its public API. Specifically, invalidate lacking the adb context might be a bug or an inconsistency if shared requires it to establish the client.
- Members sharing a duplicated core (6 members, 50+ identical tokens) (Playgrounds/iOS/SimUsePlayground/Views/ButtonTestView.swift)
- MethodTooLong: GesturePresetsView.body (Playgrounds/iOS/SimUsePlayground/Views/GesturePresetsView.swift)
- Naming inconsistency for device listing. listDevices has no parameters, while listUnifiedDevices has an onlineOnly filter. It is unclear if listDevices returns all devices (online/offline) or if it is an alias for listUnifiedDevices with default parameters. The term 'Unified' is also ambiguous without context.
- No assertions: explicitPointUIValidates (Tests/CoordinateSpaceTests.swift)
- No assertions: explicitXYUIValidates (Tests/CoordinateSpaceTests.swift)
- No assertions: selectorNativeValidates (Tests/CoordinateSpaceTests.swift)
- Off the main sequence: SimUseCore
- Outdated: swift-argument-parser
- …and 4 more
Changes since last survey
- 9 commits — 2 feature/other, 7 fixes
By area
- (repo) — 4 commits
- skills/sim-use — 2 commits
- Sources/AndroidBackend — 1 commit
- Sources/iOSSimBackend — 1 commit
- Tests/PreflightScriptTests.swift — 1 commit
Notable commits
- fix: Merge branch 'main' into fix/preflight-content-warning-takeover
- fix: Merge pull request #144 from iXerol/fix/tap-coordinate-space
- fix: Merge pull request #145 from lycorp-jp/fix/preflight-content-warning-takeover
- fix: fix(android): accept --coordinate-space on tap for parity
- fix: fix(tap): honor --coordinate-space for explicit coordinates
- fix: fix: also warn on an empty outline in skill preflight
- fix: fix: limit the empty-outline exclusion to physical iOS
- change: Merge pull request #129 from lycorp-jp/dependabot/npm_and_yarn/Tools/Viewer/browserslist-4.28.9
- change: docs(tap): document --coordinate-space on every tap surface
Architecture
- Containers 0 added · 0 removed · contexts 1 added · 1 removed · edges 0 added · 0 removed
Added bounded contexts (1)
- app
Removed bounded contexts (1)
- bridge
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
lycorp-jp/sim-use 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 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit cd6caf9b422433034c7293fb9e060c2069b642da — 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-e569280dd5e2.