Add CursorIME app and CI - #2
Merged
Merged
Conversation
A menu bar utility that shows an "あ" badge next to the cursor while Japanese input is active. Includes the Xcode project, SwiftLint config, and CI (SwiftLint, SwiftFormat, build) modeled on the sibling projects. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ff6uXvnBb6NPsUMX8XDy3
There was a problem hiding this comment.
Pull request overview
Adds a new macOS menu bar utility (CursorIME) that displays a small on-cursor badge when Japanese input is active, along with project configuration and CI automation to lint/format/build the app consistently.
Changes:
- Introduces the CursorIME SwiftUI/AppKit app (badge view, IME state detection, status bar menu behaviors).
- Adds an Xcode project + entitlements and pins Swift 6.
- Adds automation: SwiftLint/SwiftFormat/build CI, Renovate config, and Renovate/Dependabot auto-merge workflow.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
renovate.json |
Enables Renovate with recommended defaults and vulnerability alerts. |
CursorIME/InputSource.swift |
Implements IME state detection (Japanese vs Roman) using TIS properties. |
CursorIME/CursorIMEApp.swift |
Defines the SwiftUI app entrypoint and keeps AppDelegate alive without windows. |
CursorIME/CursorIME.entitlements |
Enables App Sandbox entitlement for the app target. |
CursorIME/BadgeView.swift |
Draws the on-cursor “あ” badge view. |
CursorIME/AppDelegate.swift |
Drives the status bar item, login toggle, IME observation, and overlay panel positioning. |
CursorIME.xcodeproj/project.pbxproj |
Adds the Xcode project with signing/runtime/sandbox and build settings. |
.swiftlint.yml |
Configures SwiftLint rules (incl. analyzer rules). |
.swift-version |
Pins Swift toolchain version to 6.0. |
.github/workflows/ci.yml |
Adds CI jobs for lint, formatting check, and build+analyze. |
.github/workflows/auto-merge.yml |
Auto-enables merge for Renovate/Dependabot PRs via gh pr merge --auto. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ff6uXvnBb6NPsUMX8XDy3
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ff6uXvnBb6NPsUMX8XDy3
Combine the "あ" glyph with a mouse pointer on a blue squircle. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ff6uXvnBb6NPsUMX8XDy3
The squircle mask was composited onto an image without an alpha channel, so the corners and margin baked in as opaque black. Copy the mask intensity into the alpha channel instead so they stay transparent. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ff6uXvnBb6NPsUMX8XDy3
Replace the SF Symbol with a template image that mirrors the app icon: the "あ" glyph with a mouse pointer. The system tints it for light and dark menu bars. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ff6uXvnBb6NPsUMX8XDy3
The app now ships its own icon. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ff6uXvnBb6NPsUMX8XDy3
Classify input by the mode alone: only the shared Roman mode (com.apple.inputmethod.Roman) types standard half-width alphanumeric, so treat every other mode as non-standard instead of matching the "Japanese" substring. Verified that ATOK, Kotoeri, and Google Japanese Input all report the standard Roman mode for direct alphanumeric input. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ff6uXvnBb6NPsUMX8XDy3
Replace "any Japanese IME" with the ones checked on a real machine: Kotoeri, ATOK, and Google Japanese Input. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ff6uXvnBb6NPsUMX8XDy3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test
🤖 Generated with Claude Code
https://claude.ai/code/session_016ff6uXvnBb6NPsUMX8XDy3