cc-haha/desktop/electron/services/appIdentity.ts
程序员阿江(Relakkes) ef87589923 fix(desktop): set Windows AppUserModelID and guard window navigation
- applyWindowsAppUserModelId() so Windows attributes toast notifications to the
  app (kept in sync with build.appId via a test); no-op on macOS/Linux
- main window: setWindowOpenHandler denies uncontrolled popups, routes http(s)
  links to the system browser; intentionally no will-navigate guard so dev HMR
  reloads keep working
- preview view: denies popups + blocks non-http(s) navigation (file:/custom
  schemes) while allowing in-page http(s) browsing

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 14:17:13 +08:00

19 lines
679 B
TypeScript

export type AppUserModelIdHost = {
setAppUserModelId(id: string): void
}
// Must stay in sync with build.appId in desktop/package.json. Windows attributes
// toast notifications (and taskbar pinning) to this AppUserModelID; without an
// explicit call, notifications from a dev/unpackaged run can silently fail to show.
export const WINDOWS_APP_USER_MODEL_ID = 'com.claude-code-haha.desktop'
export function applyWindowsAppUserModelId(
app: AppUserModelIdHost,
platform: NodeJS.Platform = process.platform,
appUserModelId: string = WINDOWS_APP_USER_MODEL_ID,
): boolean {
if (platform !== 'win32') return false
app.setAppUserModelId(appUserModelId)
return true
}