Skip to content
CAI
Software that uses CAICheck a score

Ji4n1ng/OpenInTerminal

51.8

Weak · 27 September 2026

4.3k

lines of production code

Swift

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This release introduces two new 'Lite' applications for macOS, each featuring a compact, single-file Swift entry point with a simplified selection interface. A significant security improvement hardens the core library against command injection vulnerabilities by replacing raw command string construction with shell-escaped arguments. The update also expands internationalization by adding German, Spanish, Italian, Korean, Russian, and Turkish localizations, alongside updated documentation and Xcode project configurations for the new targets.

Features

Add Xcode project configuration for OpenInTerminal-Lite

The OpenInTerminal-Lite application is now fully integrated into the Xcode project structure. This includes the native target, build phases for sources and resources, and references to localization files for multiple languages (English, Chinese, French, Korean, Russian, Italian, Spanish, Turkish, and German).

OpenInTerminal-Lite/OpenInTerminal-Lite.xcodeproj · high confidence

Added OpenInTerminalHelper background app

A new background helper application has been added to the project. This macOS app, identified by the bundle ID 'wang.jianing.OpenInTerminal', is designed to run in the background and launch the main 'OpenInTerminal' executable when the helper starts, ensuring only one instance of the main app is running. The helper includes standard macOS app components such as an AppDelegate, storyboard, and entitlements for app sandboxing and Apple events.

OpenInTerminalHelper · high confidence

Added Xcode scheme for OpenInEditor-Lite

The Xcode project now includes a new build and run scheme for the OpenInEditor-Lite target. This configuration defines how the app is built, launched, tested, and archived within the Xcode IDE, enabling developers to build and run the Lite variant directly from the IDE.

OpenInEditor-Lite/OpenInEditor-Lite.xcodeproj/xcshareddata · high confidence

Added Xcode schemes for the Finder extension and helper app

The project now includes build and launch configurations for the OpenInTerminal Finder extension and the OpenInTerminalHelper utility. This enables developers to build, run, and test the Finder extension and helper app directly from Xcode, ensuring the extension can be launched alongside the main application for development and debugging.

OpenInTerminal.xcodeproj/xcshareddata · high confidence

Added localization strings for the OpenInEditor-Lite feature

The OpenInEditor-Lite feature now includes localized text for English, French, and Simplified Chinese. Users will see translated prompts for general actions (OK, Cancel, Yes) and the specific alert asking them to select a default editor, ensuring the interface is accessible in these languages.

OpenInEditor-Lite/OpenInEditor-Lite/en.lproj, OpenInEditor-Lite/OpenInEditor-Lite/fr.lproj, OpenInEditor-Lite/OpenInEditor-Lite/zh-Hans.lproj · high confidence

Build and release process now supports signed, notarized macOS binaries

The project now includes build scripts (build-signed.sh and build-unsigned.sh) that produce macOS application bundles. The signed build process applies a Developer ID signature, enables the hardened runtime, and submits the app to Apple's notary service, ensuring the binaries pass Gatekeeper and satisfy Homebrew/cask requirements for signed and notarized releases. The unsigned build process provides ad-hoc signed binaries for local development. Additionally, .gitattributes, .travis.yml, LICENSE, and README.md have been added to the repository.

(repo-wide) · high confidence

German language support added to OpenInEditor-Lite and OpenInTerminal-Lite

Users can now interact with OpenInEditor-Lite and OpenInTerminal-Lite in German. This change introduces new Localizable.strings files for both applications, providing German translations for common UI elements such as OK, Cancel, and Yes, as well as specific alert titles and descriptions for selecting an editor or terminal.

OpenInEditor-Lite/OpenInEditor-Lite/de.lproj, OpenInTerminal-Lite/OpenInTerminal-Lite/de.lproj · high confidence

Introduce OpenInEditor-Lite with a compact editor picker

A new 'Lite' variant of the OpenInEditor application is introduced, featuring a single-file Swift entry point (main.swift) that presents a compact NSPopUpMenu for selecting a default editor. The implementation distinguishes between installed and non-installed applications, showing real disk icons for installed apps and bundled icons for others, while an error type (OITLError) handles cases where no editor is found.

OpenInEditor-Lite/OpenInEditor-Lite · high confidence

Korean language support added

The application now supports the Korean language. Users will see translated strings for common actions (OK, Cancel, Yes) and alert dialogs in both the editor and terminal selection interfaces.

OpenInEditor-Lite/OpenInEditor-Lite/ko.lproj, OpenInTerminal-Lite/OpenInTerminal-Lite/ko.lproj · high confidence

New FinderSync extension for macOS Finder integration

A new FinderSync extension has been added to the project, enabling the application to integrate directly with the macOS Finder. This extension provides a context menu in Finder that allows users to open selected files or directories in the default terminal or editor, as well as copy file paths to the clipboard. The implementation includes the FinderSync class, configuration in Info.plist, and necessary entitlements for sandboxed operation.

OpenInTerminalFinderExtension · high confidence

OpenInEditor-Lite Xcode project configuration added

The Xcode project file for OpenInEditor-Lite has been added, establishing the build configuration for the application. This includes the target definition, source and resource file references (such as Swift files, assets, and localization strings), and the linking of the OpenInTerminalCore framework. This change enables the proper compilation and packaging of the OpenInEditor-Lite application within the Xcode environment.

OpenInEditor-Lite/OpenInEditor-Lite.xcodeproj · high confidence

Spanish localization added for OpenInEditor-Lite and OpenInTerminal-Lite

Added Spanish (es.lproj) localizable strings for both OpenInEditor-Lite and OpenInTerminal-Lite, providing translations for general UI elements (OK, Cancel, Yes) and alert messages for selecting a default editor or terminal.

OpenInEditor-Lite/OpenInEditor-Lite/es.lproj, OpenInTerminal-Lite/OpenInTerminal-Lite/es.lproj · high confidence

Turkish localization added for core UI strings

A new Turkish (tr) localization file has been added to the application, providing translations for general action buttons (OK, Cancel, Yes) and the terminal selection alert title and description. This enables the application to display these specific interface elements in Turkish for users.

OpenInTerminal-Lite/OpenInTerminal-Lite/tr.lproj · high confidence

Updated and added multilingual documentation for configuration and usage

Added and updated README files in English, Chinese, German, and Turkish, providing comprehensive guides on installing the apps, configuring the Finder extension (including manual enablement for macOS 15+), setting default terminals/editors, and troubleshooting common issues.

Resources · high confidence

Security

Hardened app launching against command injection vulnerabilities

The core library now launches applications using discrete, shell-escaped arguments rather than constructing raw command strings. This prevents shell and AppleScript injection attacks via crafted file or folder names, addressing security advisories related to command injection in the Finder extension and app-opening logic.

OpenInTerminalCore · high confidence

Behavioural changes

Added Russian language support

Users can now see the application interface in Russian, with translations for general actions (OK, Cancel, Yes) and the terminal selection alert.

OpenInTerminal-Lite/OpenInTerminal-Lite/ru.lproj · high confidence

Added array manipulation and path escaping utilities

Added ArrayExtensions to support reordering and case-insensitive sorting of application lists, and introduced PathExtensions to safely escape special characters in file paths, addressing a command injection vulnerability.

OpenInTerminalCore/Extensions · medium confidence

Italian localization added for OpenInEditor and OpenInTerminal

Italian translations have been added for the OpenInEditor-Lite and OpenInTerminal-Lite applications. Users can now see the app interface in Italian, including strings for general actions (OK, Cancel, Yes) and the alert dialogs used to select a default editor or terminal.

OpenInEditor-Lite/OpenInEditor-Lite/it.lproj, OpenInTerminal-Lite/OpenInTerminal-Lite/it.lproj · high confidence

Redesigned app icon and status bar icon

The application's visual identity has been updated with new icon assets. The main app icon now uses a new SVG-based design with a blue gradient, and the status bar icon has been updated to support dark mode. These changes affect the appearance of the app in the Dock and menu bar.

OpenInTerminal · high confidence

Russian localization for editor selection alerts

Added Russian translations for the 'Open In' editor selection interface, including the title and description for the alert dialog that prompts users to choose a default editor.

OpenInEditor-Lite/OpenInEditor-Lite/ru.lproj · high confidence

Simplified terminal selection with a compact popup menu

The app now presents all supported terminals in a single, compact popup menu rather than a list of buttons. Installed applications are listed first with their real icons, while uninstalled ones appear below a separator with bundled icons and dimmed labels. This keeps the initial setup dialog small and consistent regardless of how many terminals are supported.

OpenInTerminal-Lite/OpenInTerminal-Lite · high confidence

Turkish localization added for core UI strings

A new Turkish (tr) localization file has been added to the app, providing translations for general action buttons (OK, Cancel, Yes) and the editor selection alert title and description. Users who set their device language to Turkish will now see these interface elements in their native language.

OpenInEditor-Lite/OpenInEditor-Lite/tr.lproj · high confidence

Updated Xcode scheme configuration for OpenInTerminal-Lite

The Xcode project's shared scheme file (OpenInTerminal-Lite.xcscheme) has been updated. This change configures the build, test, launch, and profile actions for the OpenInTerminal-Lite application within the Xcode IDE environment, ensuring that build, test, and run actions are correctly associated with the primary app target.

OpenInTerminal-Lite/OpenInTerminal-Lite.xcodeproj/xcshareddata · high confidence

Workspace updated to include OpenInTerminal-Lite and OpenInEditor-Lite projects

The Xcode workspace configuration has been updated to include the new OpenInTerminal-Lite and OpenInEditor-Lite projects alongside the main OpenInTerminal project, allowing developers to build and run these specific variants directly from the workspace.

OpenInTerminal.xcworkspace · high confidence

Xcode project file updated with new source files and build configurations

The OpenInTerminal.xcodeproj project file was updated to include new Swift source files (such as AppManager, Defaults, and various ViewControllers), localization strings for multiple languages (German, Italian, Turkish, etc.), and build configurations for the OpenInTerminalCore framework and Finder extension. This reflects the addition of new features and UI components within the main application.

OpenInTerminal.xcodeproj · medium confidence

Fixes

Added English, French, and Simplified Chinese localizations for the app's UI strings

Users will now see the app's interface in English, French, and Simplified Chinese. The new files add translations for general action buttons (OK, Cancel, Yes) and the terminal selection alert, ensuring that prompts like 'Open In?' and the description asking users to select a default terminal are properly localized in these three languages.

OpenInTerminal-Lite/OpenInTerminal-Lite/en.lproj, OpenInTerminal-Lite/OpenInTerminal-Lite/fr.lproj, OpenInTerminal-Lite/OpenInTerminal-Lite/zh-Hans.lproj · 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 50 → 52 (+1.6)
  • Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 95 (-5.2)
  • Architecture 90 (new)
  • Maturity 49 → 47 (-1.4)
  • Readiness 28 → 31 (+3.6)
  • Security 100 → 100 (+0.0)

Resolved (2)

  • Dimension evaluation failed
  • No exposed public API

New (19)

  • App.openOutsideSandbox (cognitive 25) (OpenInTerminalCore/App.swift)
  • AppDelegate.updateShortcutRegistration (cognitive 23) (OpenInTerminal/AppDelegate.swift)
  • AppDelegate.updateShortcutRegistration (cyclomatic 16) (OpenInTerminal/AppDelegate.swift)
  • Documentation: no installation or build instructions (README.md)
  • Duplicated block (10 lines × 2) (OpenInTerminal/PreferencesWindow/CustomPreferencesViewController.swift)
  • Duplicated block (6–8 lines × 3) (OpenInTerminal/PreferencesWindow/AdvancedPreferencesViewController.swift)
  • FinderManager.getAllInstalledApps (cognitive 78) (OpenInTerminalCore/FinderManager.swift)
  • FinderManager.getAllInstalledApps (cyclomatic 22) (OpenInTerminalCore/FinderManager.swift)
  • FixmeComment (OpenInTerminalCore/Extensions/PathExtensions.swift)
  • Hotspot: OpenInTerminalCore/FinderManager.swift (OpenInTerminalCore/FinderManager.swift)
  • Hotspot: OpenInTerminalCore/SupportedApps.swift (OpenInTerminalCore/SupportedApps.swift)
  • Low cohesion: AboutPreferencesViewController (LCOM4 9) (OpenInTerminal/PreferencesWindow/AboutPreferencesViewController.swift)
  • Low cohesion: DefaultsManager (LCOM4 4) (OpenInTerminalCore/DefaultsManager.swift)
  • Low cohesion: GeneralPreferencesViewController (LCOM4 4) (OpenInTerminal/PreferencesWindow/GeneralPreferencesViewController.swift)
  • Low cohesion: StatusMenuController (LCOM4 6) (OpenInTerminal/StatusMenuController.swift)
  • No ADRs found
  • Off-boarding risk: anonymized user #1
  • TodoComment (OpenInTerminal/PreferencesWindow/CustomPreferencesViewController.swift)
  • TooManyMethods: CustomPreferencesViewController (OpenInTerminal/PreferencesWindow/CustomPreferencesViewController.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

Ji4n1ng/OpenInTerminal 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 27 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 537ac2a5ee69ae46d4948c9b259e067a0c179a5f — 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-d00c643c3f66.