Releases: nissy/ModSwitchIME
Releases · nissy/ModSwitchIME
v1.1.6
- Separated throttle bookkeeping between user-triggered and internal IME switches so duplicate user requests are skipped without blocking recovery, keeping
internal retries intact (ModSwitchIME/ImeController.swift).- Added coverage ensuring a queued user retry posts the UI refresh notification and tweaked throttle tests to reflect the new timing rules
(ModSwitchIMETests/ImeControllerSkipLogicTests2.swift, ModSwitchIMETests/ImeControllerTests.swift). - Verified make test succeeds locally; make lint reports an existing file-length warning in PreferencesView.swift.
- Added coverage ensuring a queued user retry posts the UI refresh notification and tweaked throttle tests to reflect the new timing rules
v1.1.5
Release Notes (v1.1.5, 2025-09-07)
IME Switching Reliability
- Blocks duplicate same-IME requests within 100 ms to prevent chattering.
- Refreshes UI when a switch is skipped to avoid icon/state mismatches.
- On cache miss, refreshes synchronously and retries selection up to 3
times with short backoff. - Adds post-switch verification; removes the temporary “alternate IME
bounce” due to side effects.
Menu Bar Icon
- Debounces icon updates (default 60 ms) to coalesce notifications and wait
for TIS stabilization. - Invalidates display-name cache when enabled input sources change.
- Always uses SF Symbol “globe”; tooltip shows IME display name and ID.
Input Source Classification
- Excludes “.Japanese” from child-IME detection to improve parent/child
extraction. - Adds “shuangpin” to Chinese mapping for the 🇨🇳 icon.
UI & Menu
- Adds “Launch at Login” toggle using SMAppService.
- Adds “Restart ModSwitchIME” and a lightweight “Debug Info” dialog.
- Refactors About privacy notice components.
Build & Tests
- make test/test-coverage now set RUN_STRESS_TESTS=0, write results to
build/DerivedData/Logs/Test/ModSwitchIME.xcresult. - Adds make test-only, make test-safe, and lint-nocache; make lint now runs
with --no-cache.
Version
- Bumps version to 1.1.5 in MARKETING_VERSION, VERSION, and .envrc.example.
Key Files
- Core: ModSwitchIME/ImeController.swift, ModSwitchIME/
InputSourceManager.swift - UI: ModSwitchIME/MenuBarApp.swift, ModSwitchIME/PrivacyNoticeView.swift,
ModSwitchIME/Preferences.swift - Build/Config: Makefile, ModSwitchIME/Config/
Version.xcconfig, .envrc.example, VERSION - Tests: IconMappingTests.swift, InputSourceHelpersTests.swift,
MenuBarIconDebounceTests.swift, ModifierKeyMappingTests.swift, plus updates
to existing tests