Skip to content

Add eight-language support, language-first onboarding, and optional Ice Bar fades - #1002

Open
gmkrxb wants to merge 5 commits into
jordanbaird:mainfrom
gmkrxb:feat/multilingual-onboarding-icebar-fade
Open

gmkrxb wants to merge 5 commits into
jordanbaird:mainfrom
gmkrxb:feat/multilingual-onboarding-icebar-fade

Conversation

@gmkrxb

@gmkrxb gmkrxb commented Sep 27, 2026 •

Copy link
Copy Markdown

Summary

Add application language selection, a language-first onboarding flow, and optional fade transitions for Ice Bar.

Language selection

  • Support eight languages: English, Simplified Chinese (简体中文), Traditional Chinese (繁體中文), Japanese (日本語), Korean (한국어), French (Français), German (Deutsch), and Spanish (Español).
  • Add a Language submenu to both the Ice icon menu and the empty-menu-bar context menu, plus a language picker in General settings.
  • Provide a Follow System option and persist explicit language choices per application. Changing the language restarts Ice so SwiftUI, AppKit, and framework-provided interfaces use the selected language consistently.
  • Add 216 localized strings covering settings, menus, permission guidance, search, notifications, errors, and animation controls.
  • Localize interpolated durations and section names, icon names, and the last-update-check date.

First-launch language selection

  • Show a dedicated language-selection screen before the permission setup screen.
  • Preview the selected language immediately in the onboarding text and buttons; display language names in their native scripts.
  • Defer permission checks until the initial language choice has been completed.

Optional Ice Bar fade transitions

  • Add a persistent “Fade Ice Bar in and out” toggle under General settings when Ice Bar is enabled; default to off.
  • Fade in/out over approximately 180 ms and respect macOS Reduce Motion.
  • Cancel obsolete presentation requests and ongoing fades when users quickly toggle the bar or switch sections. Stop intercepting clicks as soon as dismissal begins.
  • Apply transitions to Ice Bar; native third-party menu bar icons retain their existing behavior.

Related fixes and build support

  • Prefer the system screen-recording permission check and inspect all eligible menu bar items instead of rejecting access based on the first untitled item.
  • Refresh permissions when the application becomes active; add refresh, restart, and reveal-current-app actions to help with stale permission entries.
  • Remove the shared permission continuation that could be left suspended after repeated permission requests, and guard against repeated application setup.
  • Clear invalidated auto-rehide timers and release the temporary window-capture buffer.
  • Include localization checks and a local build helper that applies a minimal CompactSlider compatibility adjustment for newer SwiftUI SDKs. The helper selects a unique Apple Development signing identity by default to preserve application identity and privacy permissions across rebuilds. An explicit ICE_CODE_SIGN_IDENTITY override is supported; ad-hoc signing is opt-in with a warning. Hardened runtime remains enabled for certificate-signed builds; project release signing settings remain unchanged.

Follow-up: macOS 26 hosted menu bar compatibility

  • Fix the reported Ice Bar crash caused by converting an out-of-range AppKit window number to CGWindowID; use checked conversions and resolve hosted control windows through the menu bar list.
  • Recognize Ice control-item autosave titles when hosted by Control Center, accept menu bar item layers used by Tahoe, and tolerate missing nonessential window metadata.
  • Retry failed item caching and refresh hosted items even when window IDs are unchanged. Allow vertical menu bar insets when capturing icon images.
  • These changes address the supplied crash report and empty-layout code paths; interactive verification remains pending.

Validation

  • Release build succeeded with Xcode 27 for both arm64 and x86_64.
  • Earlier two-language resource/persistence checks passed before expanding the catalog to eight languages. The expanded catalog compiled successfully.
  • Interactive UI, permission-grant, and animation testing has not been completed. Translations would benefit from native-speaker review.

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.

1 participant