feat(flow): implement ABCD session policy and host return whitelist

- Scheme A: on-demand session start, inactivity-based expiry, handoff auto-recording
- Scheme B: cold-start overlay with swipe guidance and return alert
- Scheme C+D: HostAppURLRegistry (20 apps) and sourceApplication capture
- Settings: skip app switch toggle and inactivity duration picker
- Add LSApplicationQueriesSchemes for canOpenURL checks

Co-authored-by: Rocky <hkgood@users.noreply.github.com>
This commit is contained in:
Cursor Agent
2026-07-06 07:38:26 +00:00
parent 6489340b2e
commit 13cd7b30f9
25 changed files with 936 additions and 77 deletions
+45
View File
@@ -360,3 +360,48 @@
/* v0.3.0: Polish intensity */
"settings.polishIntensity.title" = "Polish intensity";
/* Flow session policy */
"settings.flow.title" = "Voice session";
"settings.flow.skipAppSwitch.title" = "Skip app switch";
"settings.flow.skipAppSwitch.subtitle" = "After a cold start, try to return to the app you came from.";
"settings.flow.inactivity.title" = "End session after inactivity";
"settings.flow.inactivity.10m" = "10 minutes";
"settings.flow.inactivity.30m" = "30 minutes";
"settings.flow.inactivity.3h" = "3 hours";
"settings.flow.inactivity.12h" = "12 hours";
"settings.flow.inactivity.24h" = "24 hours";
/* Cold-start handoff (scheme B) */
"flow.coldStart.title" = "Voice is ready";
"flow.coldStart.swipeHint" = "Swipe up from the bottom edge to return to your previous app.";
"flow.coldStart.swipeHint.withSystemBack" = "Tap in the top-left or swipe up from the bottom to return.";
"flow.coldStart.dismiss" = "Got it";
"flow.coldStart.swipeAccessibility" = "Swipe up from the bottom to return";
"flow.coldStart.alert.title" = "Voice is ready";
"flow.coldStart.alert.message" = "You can return to continue typing, or swipe up from the bottom.";
"flow.coldStart.return.named" = "Return to %@";
"flow.coldStart.return.generic" = "Return to app";
/* Host app display names (scheme C whitelist) */
"hostApp.wechat" = "WeChat";
"hostApp.qq" = "QQ";
"hostApp.wecom" = "WeCom";
"hostApp.dingtalk" = "DingTalk";
"hostApp.lark" = "Lark";
"hostApp.telegram" = "Telegram";
"hostApp.whatsapp" = "WhatsApp";
"hostApp.line" = "LINE";
"hostApp.messenger" = "Messenger";
"hostApp.slack" = "Slack";
"hostApp.teams" = "Microsoft Teams";
"hostApp.discord" = "Discord";
"hostApp.notion" = "Notion";
"hostApp.bear" = "Bear";
"hostApp.obsidian" = "Obsidian";
"hostApp.drafts" = "Drafts";
"hostApp.gmail" = "Gmail";
"hostApp.outlook" = "Outlook";
"hostApp.chrome" = "Chrome";
"hostApp.weibo" = "Weibo";
"hostApp.xiaohongshu" = "RED";