| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Improve Ask Omi Siri routing and keep spoken answers in Siri (#19946) * fix(app): improve Siri Ask routing and spoken answers * fix(app): address Siri review feedback - AskOmiIntent reports its outcome through performReportingOutcome so SearchOmiIntent telemetry records delegated failures (auth, network, quota, server) instead of always 'ok' - OpenOmiFolderIntent/OpenOmiListIntent classify thrown auth failures via SiriTelemetry.outcome before the deferred telemetry write - Launch telemetry drain waits for the analytics identity bind so native Siri records are not destructively taken into a pre-auth epoch that bindIdentity then discards (P1) - Data & Privacy Siri hint and onboarding guidance move to l10n keys (siriShortcutsSetupHint/siriShortcutsSearchHint); phrases stay literal - Shortcuts hint/button gate to iOS 16 (platform view registration); Search phrase sentence gates to iOS 27 (searchInApp schema) * fix(app): address Siri review feedback round 2 - SearchOmiIntent now emits the askOmi telemetry event around the delegated performReportingOutcome call, which bypassed AskOmiIntent.perform()'s defer and lost the ask event for every search-originated ask. - iOS version gates parse the first integer run of operatingSystemVersion (iOS reports 'Version 18.2 (Build 22C150)'; split('.').first captured 'Version 18' and parsed null, so the Shortcuts settings card and onboarding hint never rendered). Shared PlatformService.isIOSAtLeast helper + tests. - Entity-open intents (conversation, memory, task, donated UI) fence authentication before the Boolean entity check so Firebase-owner failures report auth instead of server, matching the folder/list open pattern. - Truncated spoken answers keep a continuation route: short answers stay spoken-only in Siri, long ones end with 'Open Omi chat for the rest.' (iOS and macOS). * fix(app): translate Siri setup guidance and keep the CTA reachable at large text - siriShortcutsSetupHint and siriShortcutsSearchHint carried raw English copy in 32 non-English catalogs (be bg bn bs ca cs da el et fa fi hr hu kn lt lv mk mr ms no ro sk sl sr sv ta te th tl uk ur vi); supplied translations through scripts/l10n.py set so every catalog renders real localized guidance on onboarding and Data & Privacy. - Onboarding completion content is now scrollable (LayoutBuilder + SingleChildScrollView + ConstrainedBox + IntrinsicHeight) so 200% text with the Siri hint no longer overflows the fixed Column and pushes 'Start Using Omi' off-screen; centered Spacer layout preserved when content fits (ux-contract §16). - OnboardingCompleteScreen.showSiriHint test seam overrides the iOS 16 App Shortcuts gate off-device. - New hermetic widget test pins the CTA reachable (scroll + tap fires onComplete) at 2x text on a 320x568 surface with the hint shown; fails on the pre-fix fixed Column layout. Verification: flutter test test/widgets/onboarding_complete_large_text_test.dart (+2); python3 scripts/l10n.py check (49 locales, 3497 keys); scripts/l10n.py set through the repository tool; targeted fault injection (scroll wrapper removed) fails the new test. * fix(app): fail closed on Darwin version strings in iOS gates Darwin uname strings lead with the kernel major (Darwin 21 is iOS 15, Darwin 24 is iOS 18), so the previous first-integer parse over-reported the marketing version and could pass isIOSAtLeast(16)/isIOSAtLeast(27) on devices that do not satisfy them. Anchor parsing on the leading 'Version N' NSProcessInfo form; Darwin and other unrecognized formats now fail closed to 0, which keeps the Shortcuts and Search hints hidden on hosts whose iOS version cannot be determined. * fix(app): gate the Shortcuts card on native Siri availability Stable-compiler (Xcode 26.6, the required CI pin) builds compile the omi/shortcuts_button registration out of the Runner, while Data & Privacy requested the platform view purely on the runtime iOS version. Siri-capable devices running such a build therefore hit an unregistered platform-view type when opening Data & Privacy. Add a SiriIndexApi.appShortcutsAvailable capability probe: the Siri toolchain bridge answers true; the stable-compiler fallback answers false. Dart fails closed (hidden card) on Android, timeout, or any bridge error, so the card renders only in builds that actually registered the view. Regenerate the Pigeon Dart/Swift surfaces for the new method. * fix(app): keep Ask Omi read-only under the weaker auth policy Remember saves require local-device authentication (contracts/siri), but Ask Omi runs under .requiresAuthentication so a companion device (unlocked Watch, locked phone) can invoke it. The delegated 'remember ...' phrase in Ask therefore persisted a private memory without local-device auth on both iOS and macOS. Ask no longer writes: remember-phrases get a spoken redirect to the strict Remember shortcut, recorded as a cancelled ask. Addresses Codex P2 'Preserve local authentication for Remember delegation' (thread PRRT_kwDOLkKqys6nzHKv). * fix(app): gate onboarding Siri hint on availability * fix(app): regenerate localization output after merge --------- Co-authored-by: David Zhang <9387252+Git-on-my-level@users.noreply.github.com> | 1 个月前 | |
Improve Ask Omi Siri routing and keep spoken answers in Siri (#19946) * fix(app): improve Siri Ask routing and spoken answers * fix(app): address Siri review feedback - AskOmiIntent reports its outcome through performReportingOutcome so SearchOmiIntent telemetry records delegated failures (auth, network, quota, server) instead of always 'ok' - OpenOmiFolderIntent/OpenOmiListIntent classify thrown auth failures via SiriTelemetry.outcome before the deferred telemetry write - Launch telemetry drain waits for the analytics identity bind so native Siri records are not destructively taken into a pre-auth epoch that bindIdentity then discards (P1) - Data & Privacy Siri hint and onboarding guidance move to l10n keys (siriShortcutsSetupHint/siriShortcutsSearchHint); phrases stay literal - Shortcuts hint/button gate to iOS 16 (platform view registration); Search phrase sentence gates to iOS 27 (searchInApp schema) * fix(app): address Siri review feedback round 2 - SearchOmiIntent now emits the askOmi telemetry event around the delegated performReportingOutcome call, which bypassed AskOmiIntent.perform()'s defer and lost the ask event for every search-originated ask. - iOS version gates parse the first integer run of operatingSystemVersion (iOS reports 'Version 18.2 (Build 22C150)'; split('.').first captured 'Version 18' and parsed null, so the Shortcuts settings card and onboarding hint never rendered). Shared PlatformService.isIOSAtLeast helper + tests. - Entity-open intents (conversation, memory, task, donated UI) fence authentication before the Boolean entity check so Firebase-owner failures report auth instead of server, matching the folder/list open pattern. - Truncated spoken answers keep a continuation route: short answers stay spoken-only in Siri, long ones end with 'Open Omi chat for the rest.' (iOS and macOS). * fix(app): translate Siri setup guidance and keep the CTA reachable at large text - siriShortcutsSetupHint and siriShortcutsSearchHint carried raw English copy in 32 non-English catalogs (be bg bn bs ca cs da el et fa fi hr hu kn lt lv mk mr ms no ro sk sl sr sv ta te th tl uk ur vi); supplied translations through scripts/l10n.py set so every catalog renders real localized guidance on onboarding and Data & Privacy. - Onboarding completion content is now scrollable (LayoutBuilder + SingleChildScrollView + ConstrainedBox + IntrinsicHeight) so 200% text with the Siri hint no longer overflows the fixed Column and pushes 'Start Using Omi' off-screen; centered Spacer layout preserved when content fits (ux-contract §16). - OnboardingCompleteScreen.showSiriHint test seam overrides the iOS 16 App Shortcuts gate off-device. - New hermetic widget test pins the CTA reachable (scroll + tap fires onComplete) at 2x text on a 320x568 surface with the hint shown; fails on the pre-fix fixed Column layout. Verification: flutter test test/widgets/onboarding_complete_large_text_test.dart (+2); python3 scripts/l10n.py check (49 locales, 3497 keys); scripts/l10n.py set through the repository tool; targeted fault injection (scroll wrapper removed) fails the new test. * fix(app): fail closed on Darwin version strings in iOS gates Darwin uname strings lead with the kernel major (Darwin 21 is iOS 15, Darwin 24 is iOS 18), so the previous first-integer parse over-reported the marketing version and could pass isIOSAtLeast(16)/isIOSAtLeast(27) on devices that do not satisfy them. Anchor parsing on the leading 'Version N' NSProcessInfo form; Darwin and other unrecognized formats now fail closed to 0, which keeps the Shortcuts and Search hints hidden on hosts whose iOS version cannot be determined. * fix(app): gate the Shortcuts card on native Siri availability Stable-compiler (Xcode 26.6, the required CI pin) builds compile the omi/shortcuts_button registration out of the Runner, while Data & Privacy requested the platform view purely on the runtime iOS version. Siri-capable devices running such a build therefore hit an unregistered platform-view type when opening Data & Privacy. Add a SiriIndexApi.appShortcutsAvailable capability probe: the Siri toolchain bridge answers true; the stable-compiler fallback answers false. Dart fails closed (hidden card) on Android, timeout, or any bridge error, so the card renders only in builds that actually registered the view. Regenerate the Pigeon Dart/Swift surfaces for the new method. * fix(app): keep Ask Omi read-only under the weaker auth policy Remember saves require local-device authentication (contracts/siri), but Ask Omi runs under .requiresAuthentication so a companion device (unlocked Watch, locked phone) can invoke it. The delegated 'remember ...' phrase in Ask therefore persisted a private memory without local-device auth on both iOS and macOS. Ask no longer writes: remember-phrases get a spoken redirect to the strict Remember shortcut, recorded as a cancelled ask. Addresses Codex P2 'Preserve local authentication for Remember delegation' (thread PRRT_kwDOLkKqys6nzHKv). * fix(app): gate onboarding Siri hint on availability * fix(app): regenerate localization output after merge --------- Co-authored-by: David Zhang <9387252+Git-on-my-level@users.noreply.github.com> | 1 个月前 | |
Fix opening exact iOS Spotlight results (#20156) * fix: open iOS Spotlight entities in their exact Home destination * fix(ios): dedupe Spotlight opens and expire pending routes | 1 个月前 | |
Improve Ask Omi Siri routing and keep spoken answers in Siri (#19946) * fix(app): improve Siri Ask routing and spoken answers * fix(app): address Siri review feedback - AskOmiIntent reports its outcome through performReportingOutcome so SearchOmiIntent telemetry records delegated failures (auth, network, quota, server) instead of always 'ok' - OpenOmiFolderIntent/OpenOmiListIntent classify thrown auth failures via SiriTelemetry.outcome before the deferred telemetry write - Launch telemetry drain waits for the analytics identity bind so native Siri records are not destructively taken into a pre-auth epoch that bindIdentity then discards (P1) - Data & Privacy Siri hint and onboarding guidance move to l10n keys (siriShortcutsSetupHint/siriShortcutsSearchHint); phrases stay literal - Shortcuts hint/button gate to iOS 16 (platform view registration); Search phrase sentence gates to iOS 27 (searchInApp schema) * fix(app): address Siri review feedback round 2 - SearchOmiIntent now emits the askOmi telemetry event around the delegated performReportingOutcome call, which bypassed AskOmiIntent.perform()'s defer and lost the ask event for every search-originated ask. - iOS version gates parse the first integer run of operatingSystemVersion (iOS reports 'Version 18.2 (Build 22C150)'; split('.').first captured 'Version 18' and parsed null, so the Shortcuts settings card and onboarding hint never rendered). Shared PlatformService.isIOSAtLeast helper + tests. - Entity-open intents (conversation, memory, task, donated UI) fence authentication before the Boolean entity check so Firebase-owner failures report auth instead of server, matching the folder/list open pattern. - Truncated spoken answers keep a continuation route: short answers stay spoken-only in Siri, long ones end with 'Open Omi chat for the rest.' (iOS and macOS). * fix(app): translate Siri setup guidance and keep the CTA reachable at large text - siriShortcutsSetupHint and siriShortcutsSearchHint carried raw English copy in 32 non-English catalogs (be bg bn bs ca cs da el et fa fi hr hu kn lt lv mk mr ms no ro sk sl sr sv ta te th tl uk ur vi); supplied translations through scripts/l10n.py set so every catalog renders real localized guidance on onboarding and Data & Privacy. - Onboarding completion content is now scrollable (LayoutBuilder + SingleChildScrollView + ConstrainedBox + IntrinsicHeight) so 200% text with the Siri hint no longer overflows the fixed Column and pushes 'Start Using Omi' off-screen; centered Spacer layout preserved when content fits (ux-contract §16). - OnboardingCompleteScreen.showSiriHint test seam overrides the iOS 16 App Shortcuts gate off-device. - New hermetic widget test pins the CTA reachable (scroll + tap fires onComplete) at 2x text on a 320x568 surface with the hint shown; fails on the pre-fix fixed Column layout. Verification: flutter test test/widgets/onboarding_complete_large_text_test.dart (+2); python3 scripts/l10n.py check (49 locales, 3497 keys); scripts/l10n.py set through the repository tool; targeted fault injection (scroll wrapper removed) fails the new test. * fix(app): fail closed on Darwin version strings in iOS gates Darwin uname strings lead with the kernel major (Darwin 21 is iOS 15, Darwin 24 is iOS 18), so the previous first-integer parse over-reported the marketing version and could pass isIOSAtLeast(16)/isIOSAtLeast(27) on devices that do not satisfy them. Anchor parsing on the leading 'Version N' NSProcessInfo form; Darwin and other unrecognized formats now fail closed to 0, which keeps the Shortcuts and Search hints hidden on hosts whose iOS version cannot be determined. * fix(app): gate the Shortcuts card on native Siri availability Stable-compiler (Xcode 26.6, the required CI pin) builds compile the omi/shortcuts_button registration out of the Runner, while Data & Privacy requested the platform view purely on the runtime iOS version. Siri-capable devices running such a build therefore hit an unregistered platform-view type when opening Data & Privacy. Add a SiriIndexApi.appShortcutsAvailable capability probe: the Siri toolchain bridge answers true; the stable-compiler fallback answers false. Dart fails closed (hidden card) on Android, timeout, or any bridge error, so the card renders only in builds that actually registered the view. Regenerate the Pigeon Dart/Swift surfaces for the new method. * fix(app): keep Ask Omi read-only under the weaker auth policy Remember saves require local-device authentication (contracts/siri), but Ask Omi runs under .requiresAuthentication so a companion device (unlocked Watch, locked phone) can invoke it. The delegated 'remember ...' phrase in Ask therefore persisted a private memory without local-device auth on both iOS and macOS. Ask no longer writes: remember-phrases get a spoken redirect to the strict Remember shortcut, recorded as a cancelled ask. Addresses Codex P2 'Preserve local authentication for Remember delegation' (thread PRRT_kwDOLkKqys6nzHKv). * fix(app): gate onboarding Siri hint on availability * fix(app): regenerate localization output after merge --------- Co-authored-by: David Zhang <9387252+Git-on-my-level@users.noreply.github.com> | 1 个月前 | |
Improve Ask Omi Siri routing and keep spoken answers in Siri (#19946) * fix(app): improve Siri Ask routing and spoken answers * fix(app): address Siri review feedback - AskOmiIntent reports its outcome through performReportingOutcome so SearchOmiIntent telemetry records delegated failures (auth, network, quota, server) instead of always 'ok' - OpenOmiFolderIntent/OpenOmiListIntent classify thrown auth failures via SiriTelemetry.outcome before the deferred telemetry write - Launch telemetry drain waits for the analytics identity bind so native Siri records are not destructively taken into a pre-auth epoch that bindIdentity then discards (P1) - Data & Privacy Siri hint and onboarding guidance move to l10n keys (siriShortcutsSetupHint/siriShortcutsSearchHint); phrases stay literal - Shortcuts hint/button gate to iOS 16 (platform view registration); Search phrase sentence gates to iOS 27 (searchInApp schema) * fix(app): address Siri review feedback round 2 - SearchOmiIntent now emits the askOmi telemetry event around the delegated performReportingOutcome call, which bypassed AskOmiIntent.perform()'s defer and lost the ask event for every search-originated ask. - iOS version gates parse the first integer run of operatingSystemVersion (iOS reports 'Version 18.2 (Build 22C150)'; split('.').first captured 'Version 18' and parsed null, so the Shortcuts settings card and onboarding hint never rendered). Shared PlatformService.isIOSAtLeast helper + tests. - Entity-open intents (conversation, memory, task, donated UI) fence authentication before the Boolean entity check so Firebase-owner failures report auth instead of server, matching the folder/list open pattern. - Truncated spoken answers keep a continuation route: short answers stay spoken-only in Siri, long ones end with 'Open Omi chat for the rest.' (iOS and macOS). * fix(app): translate Siri setup guidance and keep the CTA reachable at large text - siriShortcutsSetupHint and siriShortcutsSearchHint carried raw English copy in 32 non-English catalogs (be bg bn bs ca cs da el et fa fi hr hu kn lt lv mk mr ms no ro sk sl sr sv ta te th tl uk ur vi); supplied translations through scripts/l10n.py set so every catalog renders real localized guidance on onboarding and Data & Privacy. - Onboarding completion content is now scrollable (LayoutBuilder + SingleChildScrollView + ConstrainedBox + IntrinsicHeight) so 200% text with the Siri hint no longer overflows the fixed Column and pushes 'Start Using Omi' off-screen; centered Spacer layout preserved when content fits (ux-contract §16). - OnboardingCompleteScreen.showSiriHint test seam overrides the iOS 16 App Shortcuts gate off-device. - New hermetic widget test pins the CTA reachable (scroll + tap fires onComplete) at 2x text on a 320x568 surface with the hint shown; fails on the pre-fix fixed Column layout. Verification: flutter test test/widgets/onboarding_complete_large_text_test.dart (+2); python3 scripts/l10n.py check (49 locales, 3497 keys); scripts/l10n.py set through the repository tool; targeted fault injection (scroll wrapper removed) fails the new test. * fix(app): fail closed on Darwin version strings in iOS gates Darwin uname strings lead with the kernel major (Darwin 21 is iOS 15, Darwin 24 is iOS 18), so the previous first-integer parse over-reported the marketing version and could pass isIOSAtLeast(16)/isIOSAtLeast(27) on devices that do not satisfy them. Anchor parsing on the leading 'Version N' NSProcessInfo form; Darwin and other unrecognized formats now fail closed to 0, which keeps the Shortcuts and Search hints hidden on hosts whose iOS version cannot be determined. * fix(app): gate the Shortcuts card on native Siri availability Stable-compiler (Xcode 26.6, the required CI pin) builds compile the omi/shortcuts_button registration out of the Runner, while Data & Privacy requested the platform view purely on the runtime iOS version. Siri-capable devices running such a build therefore hit an unregistered platform-view type when opening Data & Privacy. Add a SiriIndexApi.appShortcutsAvailable capability probe: the Siri toolchain bridge answers true; the stable-compiler fallback answers false. Dart fails closed (hidden card) on Android, timeout, or any bridge error, so the card renders only in builds that actually registered the view. Regenerate the Pigeon Dart/Swift surfaces for the new method. * fix(app): keep Ask Omi read-only under the weaker auth policy Remember saves require local-device authentication (contracts/siri), but Ask Omi runs under .requiresAuthentication so a companion device (unlocked Watch, locked phone) can invoke it. The delegated 'remember ...' phrase in Ask therefore persisted a private memory without local-device auth on both iOS and macOS. Ask no longer writes: remember-phrases get a spoken redirect to the strict Remember shortcut, recorded as a cancelled ask. Addresses Codex P2 'Preserve local authentication for Remember delegation' (thread PRRT_kwDOLkKqys6nzHKv). * fix(app): gate onboarding Siri hint on availability * fix(app): regenerate localization output after merge --------- Co-authored-by: David Zhang <9387252+Git-on-my-level@users.noreply.github.com> | 1 个月前 | |
Fix opening exact iOS Spotlight results (#20156) * fix: open iOS Spotlight entities in their exact Home destination * fix(ios): dedupe Spotlight opens and expire pending routes | 1 个月前 | |
Fix opening exact iOS Spotlight results (#20156) * fix: open iOS Spotlight entities in their exact Home destination * fix(ios): dedupe Spotlight opens and expire pending routes | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 |