{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":168008797,"defaultBranch":"main","name":"calculator","ownerLogin":"microsoft","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2019-01-28T17:55:49.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6154722?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1717170207.0","currentOid":""},"activityList":{"items":[{"before":"894a4a085c987aa3e4b382d107ed84c020f6c0b3","after":null,"ref":"refs/heads/u/yiyzhan/store-broker","pushedAt":"2024-05-31T15:43:27.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"}},{"before":"b0f1531eebe2d38aad5f48227891473885d6805c","after":"7315f364b9412e7a49934b4de20ba78138762c5a","ref":"refs/heads/main","pushedAt":"2024-05-31T15:43:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"},"commit":{"message":"Migrate StoreBroker tasks to SN+I authentication (#2179)\n\n* update\r\n\r\n* reset","shortMessageHtmlLink":"Migrate StoreBroker tasks to SN+I authentication (#2179)"}},{"before":"c73b706835ac9fa7885ad2a02fc02dfc498586ae","after":"894a4a085c987aa3e4b382d107ed84c020f6c0b3","ref":"refs/heads/u/yiyzhan/store-broker","pushedAt":"2024-05-31T08:08:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oneonezhang","name":null,"path":"/oneonezhang","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/15925839?s=80&v=4"},"commit":{"message":"reset","shortMessageHtmlLink":"reset"}},{"before":null,"after":"c73b706835ac9fa7885ad2a02fc02dfc498586ae","ref":"refs/heads/u/yiyzhan/store-broker","pushedAt":"2024-05-31T06:57:41.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oneonezhang","name":null,"path":"/oneonezhang","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/15925839?s=80&v=4"},"commit":{"message":"update","shortMessageHtmlLink":"update"}},{"before":null,"after":"b0f1531eebe2d38aad5f48227891473885d6805c","ref":"refs/heads/release/2405","pushedAt":"2024-05-28T08:19:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hanzhang54","name":null,"path":"/hanzhang54","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/78525595?s=80&v=4"},"commit":{"message":"Update minor version to 2405 (#2177)","shortMessageHtmlLink":"Update minor version to 2405 (#2177)"}},{"before":"555722ed024d3b35d9196857e362b703ba3a5cf0","after":null,"ref":"refs/heads/u/zhangh/ver","pushedAt":"2024-05-28T08:18:52.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hanzhang54","name":null,"path":"/hanzhang54","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/78525595?s=80&v=4"}},{"before":"90af5adcd2f8a6e2675d7a79a4053ec490b05dbe","after":"b0f1531eebe2d38aad5f48227891473885d6805c","ref":"refs/heads/main","pushedAt":"2024-05-28T08:18:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hanzhang54","name":null,"path":"/hanzhang54","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/78525595?s=80&v=4"},"commit":{"message":"Update minor version to 2405 (#2177)","shortMessageHtmlLink":"Update minor version to 2405 (#2177)"}},{"before":"7ebd296d6995d77069fdfa8d4201ef5d86afa8d1","after":null,"ref":"refs/heads/u/zhangh/recall","pushedAt":"2024-05-28T08:08:33.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hanzhang54","name":null,"path":"/hanzhang54","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/78525595?s=80&v=4"}},{"before":"e0a17f43b0883889cf7db1946a8359eb91cd4743","after":"90af5adcd2f8a6e2675d7a79a4053ec490b05dbe","ref":"refs/heads/main","pushedAt":"2024-05-28T08:08:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hanzhang54","name":null,"path":"/hanzhang54","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/78525595?s=80&v=4"},"commit":{"message":"Rehydrate for Recall (#2176)\n\n* Merged PR 10748585: Recall | Connect UserActivity to support restoring from snapshots\r\n\r\n## What\r\nThanks to @ for his PoC !10573092\r\nThis PR is going to use `UserActivity` APIs to connect the app to Recall so that we can take a snapshot when asked and then retore our states from the snapshot later.\r\n\r\n## How\r\n- Add a new type `SnapshotLaunchArguments` to identify a protocol launch requested by Recall.\r\n- Add an extension `LaunchExtensions` as helper to retrieve key information from fundamental types.\r\n- Refactor `App::OnActivated()` and `MainPage::OnNavigatedTo()` to handle different protocols properly.\r\n- Create or parse `UserActivity` in `MainPage` in the way like what the PoC is doing.\r\n- Improve the coding style a bit for `MainPage`.\r\n\r\n## Note\r\nThe serialization work and restoring from JSON is going to be done in a separate PR.\r\n\r\n## Testing\r\nManually tested.\r\nSome typical test cases:\r\n- Launch the app from *Start menu*\r\n- Launch the app from *Task bar*\r\n- Launch the app from *Command line*\r\n- Launch with the protocol for Recall\r\n- Launch with the protocol that is injected with evil data.\r\n\r\nRelated work items: #50854714\r\n\r\n* Merged PR 10741448: [Recall] Snapshot saving and restoring\r\n\r\n####What\r\nAccording to PM [Spec](https://microsoft.sharepoint-df.com/:w:/t/PAXEssentialExperiences421/EcpP5tGRtFdIsRrP84ueRfUBjb6tfayxWtF9ujvJuNx6Dg?e=AeRzVf), saving and restoring Calculator snapshot when required.\r\n\r\nThe current snapshot supports to:\r\n- Restore the calculator mode.\r\n- Restore the current calculation (display value and expression).\r\n- Restore the history of calculations (either in Standard mode or Scientific mode) shown at the time the snapshot was taken.\r\n- Restore the current calculation error state, if applicable.\r\n\r\n####How\r\n- Added `SnapshotHelper` to help save and restore snapshots.\r\n- Besides the existing snapshot information from view models, added an extra field `SnapshotVersion` in `ApplicationSnapshot` for backward compatibility.\r\n\r\n#### Note\r\nUnit tests will be added in a separate PR.\r\n\r\nRelated work items: #50701758\r\n\r\n* Merged PR 10772614: Recall | Update the LaunchURI design\r\n\r\n## What\r\nSince `System.Uri` already has the `Segment` property which contains the parsed path blocks, Query in Uri looks too heavy and intrusive in implementation to retrieve the activity id.\r\n\r\n## Changes\r\nChanged the launch URI from something like `ms-calculator:///snapshot?activityId=` to `ms-calculator:snapshots/`\r\n\r\nRelated work items: #50854714\r\n\r\n* Merged PR 10778666: Recall | Show error dialog if launching from snapshot has failed\r\n\r\n## What\r\nPer Figma design, we can show an error dialog with messages for the failures happens during snapshot launch.\r\n\r\n## Notes\r\n- Fixed a crash about taking a snapshot when Calculator hasn't initialized a standard calculator.\r\n- Simplified the restore path.\r\n\r\n## Screenshot\r\n![image.png](https://dev.azure.com/microsoft/d1a24475-535d-4c83-988a-9491e6dbc858/_apis/git/repositories/6255259e-4ead-4d8d-b165-55eeacc5ca48/pullRequests/10778666/attachments/image.png)\r\n\r\nRelated work items: #50858262\r\n\r\n* Merged PR 10790341: [Recall] Update calculator engine with snapshot for further calculations\r\n\r\n####What\r\nWhen restoring from snapshot, we need to set calculator engine properly to make further calculations correct.\r\n\r\n####How\r\nUpdate calculator engine by a serial of corresponding commands from snapshot.\r\n\r\nTo get the commands for the display area when saving snapshot,\r\n1. If the expression is not from history and the primary display is the result of the expression, `DisplayCommands` of `StandardCalculatorSnapshot` will be empty, and we will use the commands from `ExpressionDisplay` for restoring in the future.\r\n2. If the expression is not from history and the primary display is not the result of the expression, `DisplayCommands` of `StandardCalculatorSnapshot` will be the commands from the history collector in addition to the operand command in the primary display, and it will be used for restoring in the future.\r\n3. If the expression and primary display are from history, `DisplayCommands` will be incomplete with the operand command in the primary display missing as by current design of history, and the commands from `ExpressionDisplay` will be used for restoring in the future.\r\n\r\nRelated work items: #51002745\r\n\r\n* Merged PR 10802927: Recall | Add threat model\r\n\r\n## What\r\nThe support for Recall introduced a URI activation process allowing the Recall app to launch Calculator with desired snapshot metadata. This led to a potential security problem, and we need to address it by providing justifications.\r\n\r\nThreat model is a well-known practice among Inbox Apps. After offline discussion, we decide to add diagrams for this Recall feature to prepare for the security review.\r\n\r\n## Diagram preview\r\n![image.png](https://dev.azure.com/microsoft/d1a24475-535d-4c83-988a-9491e6dbc858/_apis/git/repositories/6255259e-4ead-4d8d-b165-55eeacc5ca48/pullRequests/10802927/attachments/image.png)\r\n\r\n![image (2).png](https://dev.azure.com/microsoft/d1a24475-535d-4c83-988a-9491e6dbc858/_apis/git/repositories/6255259e-4ead-4d8d-b165-55eeacc5ca48/pullRequests/10802927/attachments/image%20%282%29.png)\r\n\r\nRelated work items: #51165486\r\n\r\n* Merged PR 10794979: Add Recall Telemetry\r\n\r\n**Snapshot**\r\nEventName: `RecallSnapshot`\r\nPayload example:` { \"CalcMode\": \"Standard\"}`\r\n**_Fires when a snapshot (UserActivityRequested) is triggered_**\r\n\r\n**Restore**\r\nEventName: `RecallRestore`\r\nPayload example:`{ \"CalcMode\": \"Standard\"}`\r\n**_Fires when launching by snapshot (recall restore)**\r\n\r\n**Error**\r\nEventName: `Exception`\r\nPayload example: `{ \"CalcMode\": \"Standard\", \"FunctionName\" : \"MainPage::ShowSnapshotLaunchErrorAsync\", \"Message\": \"SnapshotRestoreError\" }`\r\n**_Fires when launching by snapshot failed_**\r\n\r\nRelated work items: #51114542\r\n\r\n---------\r\n\r\nCo-authored-by: Tian Liao ☕ \r\nCo-authored-by: Jian Zhang ","shortMessageHtmlLink":"Rehydrate for Recall (#2176)"}},{"before":null,"after":"555722ed024d3b35d9196857e362b703ba3a5cf0","ref":"refs/heads/u/zhangh/ver","pushedAt":"2024-05-28T06:02:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hanzhang54","name":null,"path":"/hanzhang54","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/78525595?s=80&v=4"},"commit":{"message":"Update minor version to 2405","shortMessageHtmlLink":"Update minor version to 2405"}},{"before":null,"after":"7ebd296d6995d77069fdfa8d4201ef5d86afa8d1","ref":"refs/heads/u/zhangh/recall","pushedAt":"2024-05-28T05:01:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hanzhang54","name":null,"path":"/hanzhang54","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/78525595?s=80&v=4"},"commit":{"message":"Merged PR 10794979: Add Recall Telemetry\n\n**Snapshot**\nEventName: `RecallSnapshot`\nPayload example:` { \"CalcMode\": \"Standard\"}`\n**_Fires when a snapshot (UserActivityRequested) is triggered_**\n\n**Restore**\nEventName: `RecallRestore`\nPayload example:`{ \"CalcMode\": \"Standard\"}`\n**_Fires when launching by snapshot (recall restore)**\n\n**Error**\nEventName: `Exception`\nPayload example: `{ \"CalcMode\": \"Standard\", \"FunctionName\" : \"MainPage::ShowSnapshotLaunchErrorAsync\", \"Message\": \"SnapshotRestoreError\" }`\n**_Fires when launching by snapshot failed_**\n\nRelated work items: #51114542","shortMessageHtmlLink":"Merged PR 10794979: Add Recall Telemetry"}},{"before":"e412dcdb1143d43ed7ace0541b2da0178ef2495a","after":null,"ref":"refs/heads/u/yiyzhan/tdv2","pushedAt":"2024-05-28T04:56:46.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"}},{"before":"24f75ee8405b11b758020df9aa008438cc0a82d7","after":null,"ref":"refs/heads/u/yiyzhan/tdv2-1","pushedAt":"2024-05-28T04:56:45.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"}},{"before":"e9b0a1c084fed9a714cde28d2ee01efe050633fe","after":null,"ref":"refs/heads/u/zhangh/cp-decimal","pushedAt":"2024-05-28T04:56:27.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"}},{"before":null,"after":"6eaec19c425a6c307ad9a587a647e8e055913f05","ref":"refs/heads/u/tilia/ci","pushedAt":"2024-05-28T04:56:06.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"},"commit":{"message":"Remove 1ESPT for the CI pipeline","shortMessageHtmlLink":"Remove 1ESPT for the CI pipeline"}},{"before":null,"after":"1de66142b5e70b0e130dbb42e2c55751477c8923","ref":"refs/heads/u/tilia/render","pushedAt":"2024-05-28T04:56:00.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"},"commit":{"message":"refactor draft","shortMessageHtmlLink":"refactor draft"}},{"before":"6eaec19c425a6c307ad9a587a647e8e055913f05","after":null,"ref":"refs/heads/u/tilia/ci","pushedAt":"2024-05-28T04:55:53.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"}},{"before":"1de66142b5e70b0e130dbb42e2c55751477c8923","after":null,"ref":"refs/heads/u/tilia/render","pushedAt":"2024-05-28T04:55:39.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"}},{"before":"b1237a148df5fe72fe7fe8026c1253f064ffea17","after":null,"ref":"refs/heads/u/tilia/relcon","pushedAt":"2024-04-29T09:17:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"}},{"before":"10df81d11cf27e1c92f6380821bfafd38ba74596","after":"e0a17f43b0883889cf7db1946a8359eb91cd4743","ref":"refs/heads/main","pushedAt":"2024-04-29T09:17:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"},"commit":{"message":"eng: Add publish control into the release pipeline (#2167)\n\n* add publish control\r\n\r\n* use test version\r\n\r\n* update display name\r\n\r\n* revert the test version","shortMessageHtmlLink":"eng: Add publish control into the release pipeline (#2167)"}},{"before":"8d533cafebc7130e4fb98d5927fe60277bab02c4","after":"b1237a148df5fe72fe7fe8026c1253f064ffea17","ref":"refs/heads/u/tilia/relcon","pushedAt":"2024-04-29T08:24:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"},"commit":{"message":"revert the test version","shortMessageHtmlLink":"revert the test version"}},{"before":"38913822206f95c29f3230929948bbec476ea4ba","after":"8d533cafebc7130e4fb98d5927fe60277bab02c4","ref":"refs/heads/u/tilia/relcon","pushedAt":"2024-04-29T08:21:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"},"commit":{"message":"update display name","shortMessageHtmlLink":"update display name"}},{"before":"ab7e58781f46a2e4a3648daca27620d6ccc40f23","after":"38913822206f95c29f3230929948bbec476ea4ba","ref":"refs/heads/u/tilia/relcon","pushedAt":"2024-04-29T08:18:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"},"commit":{"message":"use test version","shortMessageHtmlLink":"use test version"}},{"before":null,"after":"ab7e58781f46a2e4a3648daca27620d6ccc40f23","ref":"refs/heads/u/tilia/relcon","pushedAt":"2024-04-29T08:17:46.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"},"commit":{"message":"add publish control","shortMessageHtmlLink":"add publish control"}},{"before":"80dec0e8414b7a268b7df667848a000b150efa68","after":"0f6849690a9b8e02fdd340b16468253ca1cd6f87","ref":"refs/heads/u/tilia/relstage","pushedAt":"2024-04-29T08:08:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"},"commit":{"message":"fix yaml","shortMessageHtmlLink":"fix yaml"}},{"before":"904c99438b9b06c39229657452fe5365cdff3c80","after":"80dec0e8414b7a268b7df667848a000b150efa68","ref":"refs/heads/u/tilia/relstage","pushedAt":"2024-04-29T08:05:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"},"commit":{"message":"use test version","shortMessageHtmlLink":"use test version"}},{"before":null,"after":"904c99438b9b06c39229657452fe5365cdff3c80","ref":"refs/heads/u/tilia/relstage","pushedAt":"2024-04-29T08:04:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"},"commit":{"message":"Collect jobs into stages","shortMessageHtmlLink":"Collect jobs into stages"}},{"before":"8db2c1e48e94187a9e16f54391c4cb8ddf7be2b2","after":null,"ref":"refs/heads/u/tilia/cp-mi","pushedAt":"2024-04-28T14:13:19.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"}},{"before":"fcbda43c12cc0d92b39a27c5e60ee3bea825db65","after":"f96b7a56ee637aa51e570b99bd5407cd0bce236a","ref":"refs/heads/release/2403","pushedAt":"2024-04-28T14:13:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"},"commit":{"message":"Cherry-pick for 2403 (#2166)\n\n* Fix #2146: SWIPE DELETE FUNCTION FREEZES APP (#2157)\r\n\r\n* fix stackoverflow\r\n\r\n* space\r\n\r\n* Multi-instance (#2161)\r\n\r\n* launch multi instances\r\n\r\n* trace error\r\n\r\n* simplify the graphing test\r\n\r\n* remove an assertion\r\n\r\n* simplify some code\r\n\r\n* remove some trivial code.\r\n\r\n* fix runtime cast\r\n\r\n* Resize on the first launch (#2165)","shortMessageHtmlLink":"Cherry-pick for 2403 (#2166)"}},{"before":"16914230a4bc1d38c127771f538ec280546e01b6","after":"8db2c1e48e94187a9e16f54391c4cb8ddf7be2b2","ref":"refs/heads/u/tilia/cp-mi","pushedAt":"2024-04-28T13:00:50.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"tian-lt","name":"Tian L.","path":"/tian-lt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60599517?s=80&v=4"},"commit":{"message":"Resize on the first launch (#2165)","shortMessageHtmlLink":"Resize on the first launch (#2165)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEWS324gA","startCursor":null,"endCursor":null}},"title":"Activity · microsoft/calculator"}