{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":188041319,"defaultBranch":"master","name":"seedvault","ownerLogin":"grote","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2019-05-22T13:10:20.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/244947?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1725564257.0","currentOid":""},"activityList":{"items":[{"before":"32738fad44aeb83fdc72ed7ea854a8af4a3b7fd8","after":"de956ea1cb554190945856d2f15811ecf54c2957","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-13T19:42:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Fully implement BackupReceiver and write tests","shortMessageHtmlLink":"Fully implement BackupReceiver and write tests"}},{"before":"93fbbb8c0f9e99949468608f496224cdabeac91b","after":"32738fad44aeb83fdc72ed7ea854a8af4a3b7fd8","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-13T16:07:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Clean up metadata as it lost most of its importance\n\nHistorically, metadata was uploaded to the backend after each app update and contained all essential data that is now in snapshots. We still support reading metadata for legacy backups and use the metadata classes as a common wrapper for snapshots. However, there is no need anymore to write out complete historic metadata and maintain duplicated unused information there. This got removed. THe information we do still save and write out is only for UI representation of backup state.\n\nThe time of last backup is now managed by SettingsManager.","shortMessageHtmlLink":"Clean up metadata as it lost most of its importance"}},{"before":"1f7358502eebaf2878bc1ff63031da64c238bb91","after":"93fbbb8c0f9e99949468608f496224cdabeac91b","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-13T15:08:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Clean up metadata as it lost most of its importance\n\nHistorically, metadata was uploaded to the backend after each app update and contained all essential data that is now in snapshots. We still support reading metadata for legacy backups and use the metadata classes as a common wrapper for snapshots. However, there is no need anymore to write out complete historic metadata and maintain duplicated unused information there. This got removed. THe information we do still save and write out is only for UI representation of backup state.\n\nThe time of last backup is now managed by SettingsManager.","shortMessageHtmlLink":"Clean up metadata as it lost most of its importance"}},{"before":"b7a38842c3685fb602a766e1bb69684fb581da5b","after":"1f7358502eebaf2878bc1ff63031da64c238bb91","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-12T20:53:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"WIP: SnapshotManager","shortMessageHtmlLink":"WIP: SnapshotManager"}},{"before":"81389ad4f35313d3088e0bc65baf41f2b1d24c68","after":"b7a38842c3685fb602a766e1bb69684fb581da5b","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-12T19:22:11.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Fully implement BlobCache\n\nThis class is responsible for caching blobs during a backup run,\nso we can know that a blob for the given chunk ID already exists\nand does not need to be uploaded again.\n\nIt builds up its cache from snapshots available on the backend\nand from the persistent cache that includes blobs that could not be added to a snapshot,\nbecause the backup was aborted.","shortMessageHtmlLink":"Fully implement BlobCache"}},{"before":"4689c7cc3de4c001db4a00d3b2d1912d77c1249f","after":"81389ad4f35313d3088e0bc65baf41f2b1d24c68","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-12T18:59:56.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Fully implement BlobCache\n\nThis class is responsible for caching blobs during a backup run,\nso we can know that a blob for the given chunk ID already exists\nand does not need to be uploaded again.\n\nIt builds up its cache from snapshots available on the backend\nand from the persistent cache that includes blobs that could not be added to a snapshot,\nbecause the backup was aborted.","shortMessageHtmlLink":"Fully implement BlobCache"}},{"before":"6d5fc9b2e042f1dbb4cd28a3ed93de41a399ff41","after":"78ef0caea738ca4043f70c511973c51fdbd27977","ref":"refs/heads/unified-backends","pushedAt":"2024-09-12T12:34:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"clean up libs and fix AOSP build","shortMessageHtmlLink":"clean up libs and fix AOSP build"}},{"before":"0977f2e1df96292371fc824161ecd42107717b56","after":"4689c7cc3de4c001db4a00d3b2d1912d77c1249f","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-11T20:51:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"WIP: Also snapshot unchanged APKs","shortMessageHtmlLink":"WIP: Also snapshot unchanged APKs"}},{"before":"50b6e4d89d888339fbe0cc51861526e431335dfd","after":"0977f2e1df96292371fc824161ecd42107717b56","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-11T20:45:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"WIP: Also snapshot unchanged APKs","shortMessageHtmlLink":"WIP: Also snapshot unchanged APKs"}},{"before":"1453ea00380f06da61a267f5f539823f101a8454","after":"50b6e4d89d888339fbe0cc51861526e431335dfd","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-10T20:41:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"WIP: K/V backup and restore using v2\n\nwhile maintaining support for v0 and v1","shortMessageHtmlLink":"WIP: K/V backup and restore using v2"}},{"before":"5be6a8eae7857b08b6089a336da290efbe4b1f92","after":"1453ea00380f06da61a267f5f539823f101a8454","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-09T20:52:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Full backup and restore using v2\n\nwhile maintaining support for v0 and v1","shortMessageHtmlLink":"Full backup and restore using v2"}},{"before":"bec1ad79395927986a0eda7f21e3a199bd3b4184","after":"5be6a8eae7857b08b6089a336da290efbe4b1f92","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-09T15:41:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Prepare restore backup loading for v2","shortMessageHtmlLink":"Prepare restore backup loading for v2"}},{"before":"ca7cea127abc749fbffa18bc343b55c56929bbf6","after":"bec1ad79395927986a0eda7f21e3a199bd3b4184","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-09T15:39:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Prepare restore backup loading for v2","shortMessageHtmlLink":"Prepare restore backup loading for v2"}},{"before":"4a55998476ecc6e77b7f6ec5be509f405f7d1711","after":"ca7cea127abc749fbffa18bc343b55c56929bbf6","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-09T15:29:23.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Prepare restore backup loading for v2","shortMessageHtmlLink":"Prepare restore backup loading for v2"}},{"before":"68baf4dc6ac14bde5545359465b78b70abbc8073","after":"4a55998476ecc6e77b7f6ec5be509f405f7d1711","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-06T17:00:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Add protobuf-kotlin-lite and use new builders","shortMessageHtmlLink":"Add protobuf-kotlin-lite and use new builders"}},{"before":"158d38ae677f91b5ead8dcca9308d8193aa1b3a6","after":"68baf4dc6ac14bde5545359465b78b70abbc8073","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-06T14:49:21.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Add protobuf-kotlin-lite","shortMessageHtmlLink":"Add protobuf-kotlin-lite"}},{"before":"e2c911b4fbc4937089ceebc6a8ca619bc35d0ba6","after":"158d38ae677f91b5ead8dcca9308d8193aa1b3a6","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-06T14:42:21.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Add protobuf-kotlin-lite","shortMessageHtmlLink":"Add protobuf-kotlin-lite"}},{"before":"f3e4adedfbd62603c35cd501c118692bce031870","after":"e2c911b4fbc4937089ceebc6a8ca619bc35d0ba6","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-06T14:20:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Add protobuf-kotlin-lite","shortMessageHtmlLink":"Add protobuf-kotlin-lite"}},{"before":"4931e8f7059ecbd4558e8a4e3b5aa4de951e6195","after":"f3e4adedfbd62603c35cd501c118692bce031870","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-06T14:14:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Add protobuf-kotlin-lite","shortMessageHtmlLink":"Add protobuf-kotlin-lite"}},{"before":"84f89626a8976f79d55ad7457ceba9ec5e34073b","after":"4931e8f7059ecbd4558e8a4e3b5aa4de951e6195","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-06T13:53:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Add protobuf-kotlin-lite","shortMessageHtmlLink":"Add protobuf-kotlin-lite"}},{"before":"b0c167efb194e45d57afcfdd51daf9a1cd889ae9","after":"84f89626a8976f79d55ad7457ceba9ec5e34073b","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-06T13:52:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Add protobuf-kotlin-lite","shortMessageHtmlLink":"Add protobuf-kotlin-lite"}},{"before":"40327f0b2aee0cd76211a315fb7d005ad8ef6c3a","after":"b0c167efb194e45d57afcfdd51daf9a1cd889ae9","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-06T13:48:27.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Add protobuf-kotlin-lite","shortMessageHtmlLink":"Add protobuf-kotlin-lite"}},{"before":"691d913778249f2684cee625adea065009cb8a8e","after":"40327f0b2aee0cd76211a315fb7d005ad8ef6c3a","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-06T13:44:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"Back up app APKs in new v2 format\n\nWe still support restoring in v1 format for some time.","shortMessageHtmlLink":"Back up app APKs in new v2 format"}},{"before":"f325a04156786be04f1461afa1f04e62a70cc720","after":"691d913778249f2684cee625adea065009cb8a8e","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-06T11:58:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"WIP: v2 dedup prototype","shortMessageHtmlLink":"WIP: v2 dedup prototype"}},{"before":"574cca62d9cf847fe85ccf96f7fc3db01bb6f0db","after":"6d5fc9b2e042f1dbb4cd28a3ed93de41a399ff41","ref":"refs/heads/unified-backends","pushedAt":"2024-09-06T11:55:52.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"clean up libs and fix AOSP build","shortMessageHtmlLink":"clean up libs and fix AOSP build"}},{"before":"d29941e5ad398ac2e2db2c3f79acdc02b8753a11","after":"f325a04156786be04f1461afa1f04e62a70cc720","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-05T21:40:12.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"WIP: v2 dedup prototype","shortMessageHtmlLink":"WIP: v2 dedup prototype"}},{"before":"91d6d1d3df92b4a028f92f0f04d8dae439aa14d2","after":"d29941e5ad398ac2e2db2c3f79acdc02b8753a11","ref":"refs/heads/app-dedup-research","pushedAt":"2024-09-05T21:31:08.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"},"commit":{"message":"WIP: v2 dedup prototype","shortMessageHtmlLink":"WIP: v2 dedup prototype"}},{"before":"1b9dc258968c8fb356806fa8365fddff480a519e","after":null,"ref":"refs/heads/allow-restore","pushedAt":"2024-09-05T19:24:17.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"}},{"before":"17d0885e777cc4bb99369e7efcf4dc70affdc8ff","after":null,"ref":"refs/heads/fix-retry","pushedAt":"2024-09-05T19:14:24.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"}},{"before":"d266c36c91f98359059ae6f7a68e58e8026451d3","after":null,"ref":"refs/heads/restore-foreground-service","pushedAt":"2024-09-05T19:14:06.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"grote","name":"Torsten Grote","path":"/grote","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/244947?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xM1QxOTo0Mjo0OC4wMDAwMDBazwAAAAS11U9G","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xM1QxOTo0Mjo0OC4wMDAwMDBazwAAAAS11U9G","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wNVQxOToxNDowNi4wMDAwMDBazwAAAASuNlc8"}},"title":"Activity ยท grote/seedvault"}