Skip to content

Release ShiftInput 0.3.0 - #2

Merged
TW527E merged 1 commit into
mainfrom
codex/release-0.3.0
Aug 1, 2026
Merged

TW527E merged 1 commit into
mainfrom
codex/release-0.3.0

Conversation

@TW527E

@TW527E TW527E commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • bypass Shift and Shift + Space automatically in common remote apps and games
  • add a per-application list with independent shortcut bypass switches, enabled by default for new entries
  • document the feature in Traditional Chinese, Simplified Chinese, and English
  • bump VERSION to 0.3.0 to publish the release after merge

Validation

  • make test — 33 checks passed
  • release build with warnings as errors
  • Universal Binary DMG built and verified locally (x86_64 arm64)
  • settings UI and both independent switches verified interactively

@TW527E
TW527E marked this pull request as ready for review August 1, 2026 11:50
Copilot AI review requested due to automatic review settings August 1, 2026 11:50
@TW527E
TW527E merged commit 3c741d9 into main Aug 1, 2026
4 checks passed
@TW527E
TW527E deleted the codex/release-0.3.0 branch August 1, 2026 11:51

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 shortcut-bypass feature set for remote-desktop apps and games, including automatic detection and per-application override controls, and bumps the project version for the 0.3.0 release.

Changes:

  • Introduce ApplicationBypassPolicy (ShiftInputCore) to decide when to bypass Shift / Shift+Space based on app metadata and heuristics.
  • Add per-app bypass settings (two independent switches) surfaced in both the status-bar menu and the Preferences UI, backed by new SettingsStore keys + migration.
  • Update documentation (ZH-TW/ZH-CN/EN) and release version/build examples to 0.3.0; extend make test checks to cover new logic.

Reviewed changes

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

Show a summary per file
File Description
VERSION Bumps release version to 0.3.0.
Sources/ShiftInputCore/ApplicationBypassPolicy.swift New centralized policy for automatic/manual shortcut bypass decisions.
Sources/ShiftInput/StatusBarController.swift Adds menu toggles for automatic bypass + “current app” bypass, and updates menu state on open.
Sources/ShiftInput/SettingsStore.swift Persists automatic bypass + per-app bypass lists, includes migration for early test builds.
Sources/ShiftInput/PreferencesWindowController.swift Adds bypass settings section with per-app list UI and independent shortcut toggles.
Sources/ShiftInput/GlobalKeyboardMonitor.swift Adds shouldHandleShiftTap gating for Shift-tap action.
Sources/ShiftInput/ForegroundApplicationInfo.swift New model for foreground app metadata used by bypass policy/UI.
Sources/ShiftInput/AppDelegate.swift Tracks foreground app, wires bypass policy into keyboard monitor decisions and status-bar UI.
Scripts/StateMachineChecks.swift Adds checks for bypass policy behavior and settings migration/defaults.
README.zh-CN.md Documents bypass feature and updates build examples/version.
README.md Documents bypass feature and updates build examples/version.
README.en.md Documents bypass feature and updates build examples/version.
Makefile Extends state-machine checks build to include SettingsStore.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +129 to +133
private func rememberForegroundApplication(_ application: NSRunningApplication?) {
guard let application,
let info = ForegroundApplicationInfo(runningApplication: application) else { return }
foregroundApplication = info
}
Comment on lines +212 to +218
private func refreshExcludedApps() {
excludedBundleIDs = settings.excludedApplicationBundleIDs.sorted {
displayName(for: $0).localizedCaseInsensitiveCompare(displayName(for: $1)) == .orderedAscending
}
excludedAppsTable.reloadData()
removeExcludedAppButton.isEnabled = excludedAppsTable.selectedRow >= 0
}
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