Skip to content

Add CursorIME app and CI - #2

Merged
winebarrel merged 9 commits into
mainfrom
add-cursorime-app
Jul 10, 2026
Merged

Add CursorIME app and CI#2
winebarrel merged 9 commits into
mainfrom
add-cursorime-app

Conversation

@winebarrel

Copy link
Copy Markdown
Owner

Summary

  • Menu bar utility that shows a blue "あ" badge at the mouse cursor while Japanese input is active. Hidden for English input, so it stays idle-cheap.
  • Menu: About, Launch at Login (SMAppService), Hide Menu Bar Icon (restore by relaunching the app from Finder), Quit.
  • Adds the Xcode project (Developer ID signing configured, App Sandbox + Hardened Runtime), SwiftLint config, and CI (SwiftLint / SwiftFormat / build) modeled on Slackpad and PagerCall.

Test

  • xcodebuild build: succeeds, no Swift 6 concurrency warnings
  • swiftlint lint/analyze --strict: 0 violations
  • swiftformat --lint: clean

🤖 Generated with Claude Code

https://claude.ai/code/session_016ff6uXvnBb6NPsUMX8XDy3

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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread CursorIME/AppDelegate.swift
Comment thread CursorIME/AppDelegate.swift Outdated
Comment thread CursorIME/AppDelegate.swift
winebarrel and others added 2 commits July 11, 2026 01:58
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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 12 out of 12 changed files in this pull request and generated 1 comment.

Comment thread CursorIME/InputSource.swift Outdated
winebarrel and others added 5 commits July 11, 2026 02:16
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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 15 out of 27 changed files in this pull request and generated 1 comment.

Comment thread .github/workflows/ci.yml

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 15 out of 27 changed files in this pull request and generated 2 comments.

Comment thread README.md Outdated
Comment thread CursorIME/CursorIMEApp.swift
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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 15 out of 27 changed files in this pull request and generated 2 comments.

Comment thread CursorIME/InputSource.swift
Comment thread CursorIME/InputSource.swift
@winebarrel
winebarrel merged commit 3109b23 into main Jul 10, 2026
5 checks passed
@winebarrel
winebarrel deleted the add-cursorime-app branch July 10, 2026 18:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants