Skip to content

Releases: nissy/ModSwitchIME

v1.1.6

25 Sep 12:58
b6ec41b

Choose a tag to compare

  • 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.

v1.1.5

07 Sep 14:13
ae7b2ae

Choose a tag to compare

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

v1.1.4

11 Aug 11:14
d197536

Choose a tag to compare

Automatically adjust the screen size of the preference