twostraws/ControlRoom
56.6
Adequate · 30 September 2026
7.2k
lines of production code
Swift
primary language
2
measurements over time
What this system is
Control Room is a macOS utility application designed for managing iOS simulators and interacting with their runtime environments. It provides a unified interface for controlling simulator states, such as booting and shutting down, alongside advanced capabilities for capturing screenshots, recording videos, and exporting them as GIFs. The system allows developers to simulate device conditions by overriding system status indicators, injecting location data, and manipulating app-specific settings like deep links and push notifications.
How it got here
2020 — SwiftUI migration and UI overhaul
15 changes.
The Control Room application underwent a comprehensive migration from the legacy AppDelegate architecture to the modern SwiftUI App lifecycle, accompanied by a significant project restructuring. This period focused on redesigning the user interface with a sidebar-based layout and split views, while consolidating simulator management, capture capabilities, and deep link handling into new controller and helper modules.
2021–2023 — UI modernization and feature expansion
9 changes.
This period focused on migrating the Control Room interface to SwiftUI and reorganizing settings into dedicated tabbed views. It introduced extensive new capabilities for simulator management, including deep link editing, local location search, and device chrome rendering for screenshots. Additional features expanded asset handling with GIF export and document picking, while global keyboard shortcuts were integrated.
Features
Add local search to the Location pane
The Location pane in the Simulator UI now supports searching for locations via a local search feature. Users can type into a search field to get real-time suggestions, which are displayed in a dropdown list. Selecting a suggestion updates the map and coordinates, allowing users to quickly set a simulated location without manually entering coordinates or navigating the map. This change introduces the \LocalSearchRowView\ component for displaying search results and integrates the \LocalSearchController\ into the \LocationView\.
ControlRoom/Simulator UI/ControlScreens/LocationVIew · high confidence
Added Document Picker for file selection
Control Room now includes a Document Picker component that allows users to open a Finder dialog to select files or directories. This new feature introduces a configurable picker (DocumentPickerConfig) supporting options for choosing files vs. directories, showing hidden files, and restricting allowed content types, along with a convenience extension for JSON file types.
ControlRoom/Document Picker · high confidence
Added GIF export capability for video assets
Users can now export video recordings as animated GIFs. This new feature, implemented in ControlRoom/Extensions/AVAssetToGIF.swift, allows users to convert video assets into GIF format with configurable resolution caps and progress reporting. The implementation handles frame rate conversion, aspect ratio preservation, and error reporting during the conversion process.
ControlRoom/Extensions · high confidence
Added Release build scheme for debugger-free launching
A new 'Release - ControlRoom' Xcode scheme has been added to the project configuration. This scheme builds the application using the Release configuration and launches it without attaching a debugger (indicated by an empty debugger identifier and the use of PosixSpawn), allowing for faster startup and execution in a production-like environment compared to the standard Debug scheme.
ControlRoom.xcodeproj/xcshareddata · high confidence
Added SearchField wrapper and removed custom TextView wrapper
The ControlRoom NSViewWrappers module now includes a new SearchField component that wraps NSSearchField to provide a native macOS search box with clear-action support, while the previous custom TextView wrapper for NSTextView has been removed.
ControlRoom/NSViewWrappers · high confidence
Added device chrome rendering for screenshots
ControlRoom now renders screenshots with realistic device frames (chrome) by parsing Xcode's simulator profile and chrome JSON/PDF resources. This new ChromeRenderer component locates device-specific assets (such as corner images and edge dimensions) and composites them around the user's screenshot to produce a final image that mimics the iOS simulator appearance.
ControlRoom/Controllers/ChromeRendering · high confidence
Deep link management and system view enhancements
Users can now create, edit, duplicate, and delete named deep links via a new DeepLinkEditorView, with the ability to save and organize these links for quick access from the System tab's 'Saved Links' menu. The SystemView itself has been updated to include a 'Customize…' button to open the editor, support for dragging and dropping files to copy them into the simulator's files directory, and context menu options to open the root and files paths in Finder.
ControlRoom/Simulator UI/ControlScreens/SystemView · high confidence
Introduces new controller architecture for simulator management and user data
The application now uses a dedicated set of controllers in the ControlRoom/Controllers directory to manage core functionality, replacing previous inline logic. This includes Application and Simulator models for device and app metadata, CaptureController for handling screenshots and video recording, and specialized controllers for managing user preferences, saved locations, deep links, color history, and push notifications. Additionally, SimCtl and its subcommands are unified into a structured command-line interface, and LocalSearchController provides map-based location search capabilities.
ControlRoom/Controllers · high confidence
New ControlView consolidates simulator management and capture options
The ControlRoom UI introduces a new ControlView that serves as the central hub for managing a selected simulator. This view integrates a TabView containing tabs for System status, Snapshots, App management, Location simulation, StatusBar overrides, and Color picking. It also embeds toolbar actions for capturing screenshots (supporting PNG, JPEG, TIFF, and BMP formats) and recording videos, along with direct Boot and Shutdown buttons, providing a unified interface for these previously scattered or less accessible functions.
ControlRoom/Simulator UI · high confidence
New Simulator tabs for Colors, Overrides, Snapshots, and Status Bar
The Simulator UI now includes four new tabs. The Colors tab lets you pick colors from the screen, view history, and copy SwiftUI or UIKit code, with support for dragging colors directly into Xcode asset catalogs. The Overrides tab provides controls for accessibility settings (such as bold text, reduce motion, and contrast), appearance, and language/locale changes. The Snapshots tab allows you to view, rename, delete, and restore simulator snapshots. The Status Bar tab enables overriding the device's time, battery state, and network indicators (including new 5G options).
ControlRoom/Simulator UI/ControlScreens · high confidence
New helper utilities and settings for capture, video, and window behavior
The ControlRoom/Helpers module has been expanded with new capabilities: CaptureSettings now allows users to configure screenshot and video formats, display selection, masking, and save locations; FFMPEGConverter enables video compression with adjustable quality and bitrate; a new ContextMenu helper simplifies conditional menu display; and Defaults now supports a 'wantsFloatingWindow' setting to keep the app window on top, alongside a new 'shouldDisplaySystemApps' filter. Additional helpers include DeepLink for managing saved URLs, PickedColor for color selection and code generation, and CommandLineCommandExecuter for abstracting command-line execution.
ControlRoom/Helpers · high confidence
Removals
Removal of legacy Control Room screens
The AppView, BatteryView, DataView, and SystemView components have been removed from the ControlRoom/ControlScreens module. These files previously provided the user interface for managing app-specific actions (such as bundle ID entry, permission grants, and push notifications), device battery simulation, cellular/WiFi status overrides, and system-wide settings like time, appearance, and screenshots. Their deletion indicates these capabilities are no longer part of this specific code area.
ControlRoom/ControlScreens · high confidence
Behavioural changes
3 commits (0 fixes) modifying Working
A change to existing behaviour in Working — 3 commits, 3 files.
Working · medium confidence · unverified
App management and push notification editing UI rewritten in SwiftUI
The AppView screen and its associated components have been migrated to native SwiftUI, introducing a redesigned interface for managing simulator apps and push notifications. Users can now launch, terminate, restart, and uninstall apps directly from the App tab, with new options to open data folders, edit UserDefaults, and clear state restoration data via a dedicated menu. The push notification workflow has been enhanced with a new NotificationEditorView that provides a form-based interface for configuring APS payload fields (including localized alerts and sound settings) alongside a raw JSON editor, supported by inline hints for valid JSON structures.
ControlRoom/Simulator UI/ControlScreens/AppView · high confidence
Major project restructuring and SwiftUI migration
The ControlRoom project has been significantly reorganized to support a modern SwiftUI-based interface, replacing the previous AppDelegate-driven architecture with a new App struct and MainWindowController. This change introduces a sidebar layout, a dedicated Settings view, and a suite of new capabilities including deep link management, color picking with history, and simulator snapshotting. The project file also reflects the removal of legacy Objective-C components and the addition of new frameworks like CoreSimulator and KeyboardShortcuts to support these features.
ControlRoom.xcodeproj · high confidence
Migrated to SwiftUI App lifecycle with new menu bar and deep link features
Control Room has been rewritten to use the modern SwiftUI App lifecycle (replacing the legacy AppDelegate), introducing a persistent menu bar extra that allows users to resend the last push notification, restart the last selected app, and reopen the last URL via keyboard shortcuts. The app now supports saving and accessing deep links directly from the menu bar, displays an About window with author credits, and includes Arabic localization. Additionally, the app now requests Apple Events automation permissions to interact with other apps like Terminal, and the main window layout has been updated to use a sidebar-based navigation structure.
ControlRoom · high confidence
New SwiftUI-based About screen with contributor listing
The About window has been rewritten in SwiftUI to display the application name, version, build number, and copyright information. It now also features a scrollable list of project contributors, sourced from a local JSON file and sorted by contribution count, replacing the previous implementation.
ControlRoom/About UI · high confidence
Redesigned main window with split layout and new simulator management actions
The Control Room interface has been restructured to use a split layout, featuring a sidebar for simulator selection and a detail pane for controls. This update introduces several new capabilities: users can now create new simulators via a dedicated action sheet, and manage existing ones through context menus that support renaming, cloning, creating snapshots, and deleting (with confirmation). The sidebar also supports multi-selection for batch operations like deleting multiple simulators or dragging and dropping files to copy them into the Files directory of booted simulators. Additionally, a new floating window preference has been added to the settings.
ControlRoom/Main Window · high confidence
Refactored loading and error views for better UI and reusability
The loading screen now displays a clear progress spinner using the large control size to prevent blurriness, and the error view has been refactored to accept dynamic title and text parameters, allowing for more specific and localized error messaging instead of a hardcoded string.
ControlRoom/Loading · high confidence
Settings UI reorganized into dedicated tabbed views
The Settings interface has been refactored from a single monolithic view into a structured TabView with five distinct tabs: Window (app behavior toggles), Shortcuts (keyboard shortcut configuration), Screenshots (capture format, display, mask, and save location settings), Colors (hex string formatting and decimal precision for simulator color picking), and Locations (terminal app path). This change improves navigation and isolates specific configuration concerns into their own SwiftUI views.
ControlRoom/Settings UI · high confidence
Updated menu structure and storyboard compatibility
The main storyboard has been updated to target Interface Builder version 21225, ensuring compatibility with newer Xcode versions. The application menu has been reorganized: the Edit menu now includes standard Cut, Copy, and Paste actions alongside Undo and Redo, while the Find, Spelling, and Substitutions menus have been removed. New File menu items allow users to create a new simulator (⌘N) and delete unavailable simulators (⇧⌘D). Additionally, the Preferences menu item is now explicitly connected to its action handler, and the About menu item title has been corrected to 'About Control Room'.
ControlRoom/Base.lproj · high confidence
Workspace file reference corrected to self
The workspace configuration file was updated to reference the project using the 'self' location identifier instead of the explicit path 'self:ControlRoom.xcodeproj'. This change simplifies the workspace definition by relying on the implicit context of the workspace file's location, ensuring the workspace correctly points to its associated project without hardcoding the project directory name.
ControlRoom.xcodeproj/project.xcworkspace · high confidence
Test coverage
Added unit tests for SimCtl subcommands
Added a new test suite, \SimCtlSubCommandsTests\, that verifies the correct command-line argument generation for various \simctl\ operations including deleting unavailable devices, booting simulators (with environment overrides for specific runtime versions), recording video, taking screenshots, listing devices, opening URLs, adding media, and spawning processes.
ControlRoomTests · high confidence
Dependencies
Added KeyboardShortcuts dependency
The project now includes the KeyboardShortcuts library (version 2.3.0) as a resolved package dependency, enabling global keyboard shortcut functionality within the application.
(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 65 → 57 (-8.9)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 100 → 99 (-0.5)
- Architecture 96 → 80 (-15.6)
- Maturity 52 → 52 (+0.0)
- Readiness 55 → 41 (-13.6)
- Security 97 → 97 (+0.0)
New (5)
- Documentation: no installation or build instructions (README.md)
- Duplicated block (11 lines × 2) (ControlRoom/Main Window/SimulatorSidebarView.swift)
- Duplicated block (9 lines × 2) (ControlRoom/Simulator UI/ControlScreens/AppView/NotificationEditorView.swift)
- Outdated: keyboardshortcuts
- URL.convertToGIF (cognitive 22) (ControlRoom/Extensions/AVAssetToGIF.swift)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
twostraws/ControlRoom 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 c8c7d4cfd4013e0a36466ed44c179522387ff437 — 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.