feat(flow): harden host handoff, session UX, and Live Activity brand
- fix(keyboard): drop unusable extensionContext.open; report the real result of UIApplication.open and cancel the start watchdog immediately on failure with clear "open OSGKeyboard" guidance instead of a 30s spin - feat(capture): recover from audio route changes (AirPods/wired headset plug-unplug) and phone-call interruptions by rebuilding the engine/tap against the live hardware format - feat(home): add a "Start" button in the Home footer when a session is inactive and permissions are granted (no-jump manual restart) - feat(hostapps): expand the return whitelist to 46 apps (Signal, Zoom, Instagram, X, Douyin, Zhihu, Bilibili, Things, Firefox, ...) with en/zh-Hans names and synced LSApplicationQueriesSchemes - feat(island): use a "ready" checkmark instead of a mic glyph while idle and set a staleDate so an orphaned Live Activity fades after a force-quit - feat(coldstart): use the template OSG brand mark instead of a system waveform glyph in the cold-start overlay - perf(keyboard): rely on Darwin notifications as the primary session signal and drop the fallback poll from 1s to 3s - fix(keyboard): remove the redundant "Start" text button next to the inactive-session hint on the keyboard - docs: correct the per-take cap to 210s (3.5 min) and document that force-quitting no longer resurrects the session (tracker + READMEs)
This commit is contained in:
@@ -156,6 +156,153 @@ public enum HostAppURLRegistry {
|
||||
displayNameKey: "hostApp.xiaohongshu",
|
||||
returnURLString: "xhsdiscover://",
|
||||
tier: 4
|
||||
),
|
||||
// Tier 2 (cont.) — global IM / calls
|
||||
HostAppEntry(
|
||||
bundleId: "org.whispersystems.signal",
|
||||
displayNameKey: "hostApp.signal",
|
||||
returnURLString: "sgnl://",
|
||||
tier: 2
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.iwilab.KakaoTalk",
|
||||
displayNameKey: "hostApp.kakaotalk",
|
||||
returnURLString: "kakaotalk://",
|
||||
tier: 2
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.viber",
|
||||
displayNameKey: "hostApp.viber",
|
||||
returnURLString: "viber://",
|
||||
tier: 2
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.vng.zaloapp",
|
||||
displayNameKey: "hostApp.zalo",
|
||||
returnURLString: "zalo://",
|
||||
tier: 2
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.skype.skype",
|
||||
displayNameKey: "hostApp.skype",
|
||||
returnURLString: "skype://",
|
||||
tier: 2
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "us.zoom.videomeetings",
|
||||
displayNameKey: "hostApp.zoom",
|
||||
returnURLString: "zoomus://",
|
||||
tier: 2
|
||||
),
|
||||
// Tier 3 (cont.) — notes / mail / browser
|
||||
HostAppEntry(
|
||||
bundleId: "com.culturedcode.ThingsiPhone",
|
||||
displayNameKey: "hostApp.things",
|
||||
returnURLString: "things://",
|
||||
tier: 3
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.todoist.ios",
|
||||
displayNameKey: "hostApp.todoist",
|
||||
returnURLString: "todoist://",
|
||||
tier: 3
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.evernote.iPhone.Evernote",
|
||||
displayNameKey: "hostApp.evernote",
|
||||
returnURLString: "evernote://",
|
||||
tier: 3
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.microsoft.onenote",
|
||||
displayNameKey: "hostApp.onenote",
|
||||
returnURLString: "onenote://",
|
||||
tier: 3
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.readdle.smartemail",
|
||||
displayNameKey: "hostApp.spark",
|
||||
returnURLString: "readdle-spark://",
|
||||
tier: 3
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "org.mozilla.ios.Firefox",
|
||||
displayNameKey: "hostApp.firefox",
|
||||
returnURLString: "firefox://",
|
||||
tier: 3
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.microsoft.msedge",
|
||||
displayNameKey: "hostApp.edge",
|
||||
returnURLString: "microsoft-edge://",
|
||||
tier: 3
|
||||
),
|
||||
// Tier 4 (cont.) — global / China social
|
||||
HostAppEntry(
|
||||
bundleId: "com.facebook.Facebook",
|
||||
displayNameKey: "hostApp.facebook",
|
||||
returnURLString: "fb://",
|
||||
tier: 4
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.burbn.instagram",
|
||||
displayNameKey: "hostApp.instagram",
|
||||
returnURLString: "instagram://",
|
||||
tier: 4
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.atebits.Tweetie2",
|
||||
displayNameKey: "hostApp.x",
|
||||
returnURLString: "twitter://",
|
||||
tier: 4
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.burbn.barcelona",
|
||||
displayNameKey: "hostApp.threads",
|
||||
returnURLString: "barcelona://",
|
||||
tier: 4
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.toyopagroup.picaboo",
|
||||
displayNameKey: "hostApp.snapchat",
|
||||
returnURLString: "snapchat://",
|
||||
tier: 4
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.reddit.Reddit",
|
||||
displayNameKey: "hostApp.reddit",
|
||||
returnURLString: "reddit://",
|
||||
tier: 4
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "pinterest",
|
||||
displayNameKey: "hostApp.pinterest",
|
||||
returnURLString: "pinterest://",
|
||||
tier: 4
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.zhihu.ios",
|
||||
displayNameKey: "hostApp.zhihu",
|
||||
returnURLString: "zhihu://",
|
||||
tier: 4
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "tv.danmaku.bili",
|
||||
displayNameKey: "hostApp.bilibili",
|
||||
returnURLString: "bilibili://",
|
||||
tier: 4
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.ss.iphone.ugc.Aweme",
|
||||
displayNameKey: "hostApp.douyin",
|
||||
returnURLString: "snssdk1128://",
|
||||
tier: 4
|
||||
),
|
||||
HostAppEntry(
|
||||
bundleId: "com.zhiliaoapp.musically",
|
||||
displayNameKey: "hostApp.tiktok",
|
||||
returnURLString: "tiktok://",
|
||||
tier: 4
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user