{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":116309308,"defaultBranch":"master","name":"data-transfer-project","ownerLogin":"google","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-01-04T21:27:57.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1342004?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1713543984.0","currentOid":""},"activityList":{"items":[{"before":"9721abacbc4b0a141b6d2240f6375724f14c1abc","after":"5d41b75c6290a2405a8434be3250c4594b2e365d","ref":"refs/heads/master","pushedAt":"2024-05-10T16:44:52.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gauss0818","name":"Siyu Gao","path":"/gauss0818","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20235239?s=80&v=4"},"commit":{"message":"Fine tune music importer post request read timeout due to new socket timeout error (#1358)","shortMessageHtmlLink":"Fine tune music importer post request read timeout due to new socket …"}},{"before":"b2333166d539c498a8444212270d347555f29ffc","after":"9721abacbc4b0a141b6d2240f6375724f14c1abc","ref":"refs/heads/master","pushedAt":"2024-05-08T16:43:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gauss0818","name":"Siyu Gao","path":"/gauss0818","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20235239?s=80&v=4"},"commit":{"message":"Reduce read time out for music post request based on Music Import APIs latency (#1357)","shortMessageHtmlLink":"Reduce read time out for music post request based on Music Import API…"}},{"before":"a4757f6182b7bc4b1af38c8cbafd47b29d1cd0d6","after":"b2333166d539c498a8444212270d347555f29ffc","ref":"refs/heads/master","pushedAt":"2024-05-03T18:47:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sparuvu","name":"Sundeep Paruvu","path":"/sparuvu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2092826?s=80&v=4"},"commit":{"message":"Adding music scopes to AppleOAuthConfig (#1353)\n\n* Adding Apple Music Importer extension\r\n\r\n* minor fix for a newline char\r\n\r\n* http exception handling fix\r\n\r\n* addressing comments for exception handling and other minor logging\r\n\r\n* bugfix: NullPointerExc swallowing real errors (#1341)\r\n\r\nImmutableMap is being used to log error cases during a transfer.\r\nUnfortunately said error cases are _themselves_ obfuscated by a less\r\ninteresting `NullPointerException` due to ImmutableMap receiving nulls.\r\n\r\nImmutableMap doesn't allow null values (see guava's issues 1782) but\r\nit's being passed an `albumId` sometimes set to null. This might be\r\nhappening in multiple places but I've at least seen it in the primary\r\ndownload/upload loop (on line 588, before this change).\r\n\r\n* comments in the proto\r\n\r\n* merging in from jzacsh:dtp:applemusic-harshil-pr-prefactor\r\n\r\n* merging in from jzacsh:dtp:applemusic-harshil-pr-prefactor branch\r\n\r\n* Adding music scopes to AppleOAuthConfig\r\n\r\n---------\r\n\r\nCo-authored-by: Jonathan Zacsh \r\nCo-authored-by: Sundeep Paruvu ","shortMessageHtmlLink":"Adding music scopes to AppleOAuthConfig (#1353)"}},{"before":"0308c8be9dc3ba75bbd121afffef13bea09ec7e0","after":"a4757f6182b7bc4b1af38c8cbafd47b29d1cd0d6","ref":"refs/heads/master","pushedAt":"2024-05-03T18:45:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jzacsh","name":"Jonathan Zacsh","path":"/jzacsh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/156228?s=80&v=4"},"commit":{"message":"install Apple's music adapter their DTP extension (#1356)","shortMessageHtmlLink":"install Apple's music adapter their DTP extension (#1356)"}},{"before":"db39aa2f46fbef64356d58b903df85e30dae4959","after":"0308c8be9dc3ba75bbd121afffef13bea09ec7e0","ref":"refs/heads/master","pushedAt":"2024-04-30T00:05:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aksingh737","name":null,"path":"/aksingh737","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/130187841?s=80&v=4"},"commit":{"message":"resolve TODO: match full stacktrace retry strategy (#1354)\n\nthis is a new feature that should have no impact on existing\r\nRetryStrategy yaml/json users: there's simply a new `stacktraceRegexes`\r\nkey in the config that acts as an alternative to the older `regexes`.\r\nIt's only difference from the original is that its regexes match across\r\nthe long, multi-line strings that are **full** stacktraces.\r\n\r\nmotivation: matching more of the Throwable is a TODO that's come up\r\nmultiple times and now actually caused a surprise last-minute bug for\r\nus, so this patch resolves the feature gap and unblocks google's and\r\napple's work.\r\n\r\ntesting: for now we're leaving backfilling (a new unit test for this\r\nfile) as a fast-follow, since Google has intern integration~esque\r\nunit-test coverage of this file against our real-world YAML config. Not\r\nideal, but need time to come back and opensource the test.","shortMessageHtmlLink":"resolve TODO: match full stacktrace retry strategy (#1354)"}},{"before":"b9a32f518ddb4c0d1f10320c72f5064db0220e0e","after":null,"ref":"refs/heads/applefix","pushedAt":"2024-04-19T16:26:24.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jzacsh","name":"Jonathan Zacsh","path":"/jzacsh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/156228?s=80&v=4"}},{"before":"8d6bfdcec85de77e605b1ed04150a6c9c3aa96a7","after":"db39aa2f46fbef64356d58b903df85e30dae4959","ref":"refs/heads/master","pushedAt":"2024-04-02T19:17:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jzacsh","name":"Jonathan Zacsh","path":"/jzacsh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/156228?s=80&v=4"},"commit":{"message":"Let albumIds be null (#1352)","shortMessageHtmlLink":"Let albumIds be null (#1352)"}},{"before":null,"after":"b9a32f518ddb4c0d1f10320c72f5064db0220e0e","ref":"refs/heads/applefix","pushedAt":"2024-04-02T18:50:31.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kateyeo","name":null,"path":"/kateyeo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/88804869?s=80&v=4"},"commit":{"message":"Let albumIds be null","shortMessageHtmlLink":"Let albumIds be null"}},{"before":null,"after":"c4e6651333b5fff26e535e4fcbff196ac072491f","ref":"refs/heads/dependabot/npm_and_yarn/client-rest/express-4.19.2","pushedAt":"2024-03-28T07:05:52.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump express from 4.18.1 to 4.19.2 in /client-rest\n\nBumps [express](https://github.com/expressjs/express) from 4.18.1 to 4.19.2.\n- [Release notes](https://github.com/expressjs/express/releases)\n- [Changelog](https://github.com/expressjs/express/blob/master/History.md)\n- [Commits](https://github.com/expressjs/express/compare/4.18.1...4.19.2)\n\n---\nupdated-dependencies:\n- dependency-name: express\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump express from 4.18.1 to 4.19.2 in /client-rest"}},{"before":"fcc8334ec07741ba517636bfe049719fb1290df9","after":"8d6bfdcec85de77e605b1ed04150a6c9c3aa96a7","ref":"refs/heads/master","pushedAt":"2024-03-21T23:43:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aksingh737","name":null,"path":"/aksingh737","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/130187841?s=80&v=4"},"commit":{"message":"Correct the impotent id being set for videos. (#1350)\n\n* Correct the idempotentId for videos which prevented the duplicated videos showing in other albums.\r\n\r\n* refactor the test to verify that the correct idempotent id is set\r\n\r\n* Return dataID for VideoModels when getDataID is called\r\n\r\n* Refactor test to check for idempotentId in the executor\r\n\r\n* Refactor AppleVideosImporterTest to use idempotentId for videos assertion\r\n\r\n* nitfix:indent\r\n\r\n---------\r\n\r\nCo-authored-by: kateyeo <88804869+kateyeo@users.noreply.github.com>","shortMessageHtmlLink":"Correct the impotent id being set for videos. (#1350)"}},{"before":"7ac1635d6ffb955aa30ee34d6c51bf544063f56f","after":null,"ref":"refs/heads/flickrvideo","pushedAt":"2024-03-21T19:09:52.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jzacsh","name":"Jonathan Zacsh","path":"/jzacsh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/156228?s=80&v=4"}},{"before":"d95a21ea8a3a658ad16cf7dbe1c1e4f2676c2612","after":"fcc8334ec07741ba517636bfe049719fb1290df9","ref":"refs/heads/master","pushedAt":"2024-03-21T18:52:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kateyeo","name":null,"path":"/kateyeo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/88804869?s=80&v=4"},"commit":{"message":"Fix duplicate video check in Flickr (#1349)","shortMessageHtmlLink":"Fix duplicate video check in Flickr (#1349)"}},{"before":"58bd4011de1745c23e1429bb8fc1926f6a9b8d4d","after":"7ac1635d6ffb955aa30ee34d6c51bf544063f56f","ref":"refs/heads/flickrvideo","pushedAt":"2024-03-21T18:41:46.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"kateyeo","name":null,"path":"/kateyeo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/88804869?s=80&v=4"},"commit":{"message":"Merge branch 'master' into flickrvideo","shortMessageHtmlLink":"Merge branch 'master' into flickrvideo"}},{"before":"4ea9388fe3c2ebe5f8be81c7a6895398b0108fd5","after":"d95a21ea8a3a658ad16cf7dbe1c1e4f2676c2612","ref":"refs/heads/master","pushedAt":"2024-03-21T17:19:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"kateyeo","name":null,"path":"/kateyeo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/88804869?s=80&v=4"},"commit":{"message":"add skip logic in PortabilityAbstractInMemoryDataCopier import module and refactor AppleMediaImporter to remove in extension retry/skip (#1348)","shortMessageHtmlLink":"add skip logic in PortabilityAbstractInMemoryDataCopier import module…"}},{"before":null,"after":"58bd4011de1745c23e1429bb8fc1926f6a9b8d4d","ref":"refs/heads/flickrvideo","pushedAt":"2024-03-20T22:41:15.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"kateyeo","name":null,"path":"/kateyeo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/88804869?s=80&v=4"},"commit":{"message":"Fix video error message","shortMessageHtmlLink":"Fix video error message"}},{"before":"556c269df90508b2ac84b886e2bec0863319aa79","after":"4ea9388fe3c2ebe5f8be81c7a6895398b0108fd5","ref":"refs/heads/master","pushedAt":"2024-03-18T16:07:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gauss0818","name":"Siyu Gao","path":"/gauss0818","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20235239?s=80&v=4"},"commit":{"message":"Google Music - Remove artists from GoogleRelease (#1346)\n\n* Remove artists attribution in GoogleRelease since there is no artists of release at API level","shortMessageHtmlLink":"Google Music - Remove artists from GoogleRelease (#1346)"}},{"before":"5bff3923cd19341acffa4c546ac7f69f4ba3d6ed","after":null,"ref":"refs/heads/dependabot/npm_and_yarn/client-rest/follow-redirects-1.15.4","pushedAt":"2024-03-15T13:12:04.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"}},{"before":null,"after":"e6a2b532354ad9e8280e770987c6af50baa4b4a3","ref":"refs/heads/dependabot/npm_and_yarn/client-rest/follow-redirects-1.15.6","pushedAt":"2024-03-15T13:12:00.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump follow-redirects from 1.14.8 to 1.15.6 in /client-rest\n\nBumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.8 to 1.15.6.\n- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)\n- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.8...v1.15.6)\n\n---\nupdated-dependencies:\n- dependency-name: follow-redirects\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump follow-redirects from 1.14.8 to 1.15.6 in /client-rest"}},{"before":"b63e936524bbade83ca14d6e755ab9c36a46760e","after":"556c269df90508b2ac84b886e2bec0863319aa79","ref":"refs/heads/master","pushedAt":"2024-03-14T20:55:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jzacsh","name":"Jonathan Zacsh","path":"/jzacsh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/156228?s=80&v=4"},"commit":{"message":"Adding Apple Music Importer extension (#1339)\n\nCo-authored-by: Jonathan Zacsh ","shortMessageHtmlLink":"Adding Apple Music Importer extension (#1339)"}},{"before":"9be4692ed23c899c074796fdf48da618ff79f289","after":"b63e936524bbade83ca14d6e755ab9c36a46760e","ref":"refs/heads/master","pushedAt":"2024-03-13T20:11:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jzacsh","name":"Jonathan Zacsh","path":"/jzacsh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/156228?s=80&v=4"},"commit":{"message":"Apple music prefactor new http package (#1343)\n\nnoop(prefactor) new Apple api for token refresh\r\n\r\ncommon pattern in apple server-API classes factored out into a new\r\ninternal-only `TokenRefresher` class and while we're add it, starting an internal\r\n`http` package so more low-level HTTP traffic-management can be shared/tested.\r\nthis is a prefactor to code in PR #1339 for Apple Music code.\r\n\r\nWhile done differently between MediaInterface and MusicInterface, they're\r\nfundamentlaly the same. Harshil and I discussed and plan to set this up for\r\nMusic and move Media over to this later in our copious spare time.","shortMessageHtmlLink":"Apple music prefactor new http package (#1343)"}},{"before":"60d61dcefffb64bf80f3b9ebf58c7b0deee6ef9a","after":"9be4692ed23c899c074796fdf48da618ff79f289","ref":"refs/heads/master","pushedAt":"2024-03-13T16:28:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jzacsh","name":"Jonathan Zacsh","path":"/jzacsh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/156228?s=80&v=4"},"commit":{"message":"noop(new api) use `URI`, start resolving primitive-obsession (#1342)\n\nnoop(new api) use `URI`, avoid primitive obsession in `TokensAndUrlAuthData` class.\r\n\r\nopen the door to let us start moving away from \"primitive obsession\"\r\n(strings, all strings, all the way down), which _in turn_ lets us start handling errors\r\nmore concisely and in the right places.\r\n\r\nthis is a [prefactor](https://twitter.com/kentbeck/status/250733358307500032) for\r\nan upcoming apple-music PR that relies on this class for oauth token refresh.","shortMessageHtmlLink":"noop(new api) use URI, start resolving primitive-obsession (#1342)"}},{"before":"9917d084915266f67392e094f060e85eff916bec","after":"60d61dcefffb64bf80f3b9ebf58c7b0deee6ef9a","ref":"refs/heads/master","pushedAt":"2024-03-11T19:56:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jzacsh","name":"Jonathan Zacsh","path":"/jzacsh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/156228?s=80&v=4"},"commit":{"message":"bugfix: NullPointerExc swallowing real errors (#1341)\n\nImmutableMap is being used to log error cases during a transfer.\r\nUnfortunately said error cases are _themselves_ obfuscated by a less\r\ninteresting `NullPointerException` due to ImmutableMap receiving nulls.\r\n\r\nImmutableMap doesn't allow null values (see guava's issues 1782) but\r\nit's being passed an `albumId` sometimes set to null. This might be\r\nhappening in multiple places but I've at least seen it in the primary\r\ndownload/upload loop (on line 588, before this change).","shortMessageHtmlLink":"bugfix: NullPointerExc swallowing real errors (#1341)"}},{"before":"b4c3c89821b8356f466c112e22193e8bfd32100d","after":"9917d084915266f67392e094f060e85eff916bec","ref":"refs/heads/master","pushedAt":"2024-03-01T22:28:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jzacsh","name":"Jonathan Zacsh","path":"/jzacsh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/156228?s=80&v=4"},"commit":{"message":"Fix swallowed apple server errors (#1338)\n\nfailures to upload to Apple servers (via [`AppleMediaInterface#importAllMedia`](https://github.com/google/data-transfer-project/blob/b4c3c89821b8356f466c112e22193e8bfd32100d/extensions/data-transfer/portability-data-transfer-apple/src/main/java/org/datatransferproject/datatransfer/apple/photos/AppleMediaInterface.java#L462)) (which includes failures to first download from an origin like Google) now include the root cause in their stack trace.\r\n\r\nnitty details of this change:\r\n- noop~ish: improve error handling: capturing errors as specifically as is reasonable:\r\n - ensure legit internal `apple.photos.streaming.StreamingContentClient` connection-setup (constructor) errors are distinguished from illegal states (like bad HTTP Methods)\r\n - ensure download/upload sequence (encapsulated by the `AppleMediaInterface#uploadContent` method) bubbles error-reasons up:\r\n - changes its API to return something even on failure; added a new oneof called `DownUpResult` for this purpose (see the change to the [previously-empty `continue` catch-block](https://github.com/google/data-transfer-project/blob/b4c3c89821b8356f466c112e22193e8bfd32100d/extensions/data-transfer/portability-data-transfer-apple/src/main/java/org/datatransferproject/datatransfer/apple/photos/AppleMediaInterface.java#L210))\r\n - when skipping errors, bubble the cause (the `Throwable`) back up via `IdempotentImportExecutor#executeAndSwallowIOExceptions` (there was already a `executeAndSwallowIOExceptions` but the [exception it previously threw didn't pass a second param](https://github.com/google/data-transfer-project/blob/b4c3c89821b8356f466c112e22193e8bfd32100d/extensions/data-transfer/portability-data-transfer-apple/src/main/java/org/datatransferproject/datatransfer/apple/photos/AppleMediaInterface.java#L562) (the \"cause\") to its `IOException`, and now it does). \r\n- nit: making the internal `apple.photos.streaming.StreamingContentClient` an `AutoCloseable` so that we can get a `HttpURLConnection#disconnect` via [try-with-resource](https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html)\r\n- noop: test refactoring\r\n - updated test-double logic now that `uploadContent` returns something for _every_ file passed in\r\n - changed some test-double setup code so it reuses the `uploadContent` spy infra that was already in place","shortMessageHtmlLink":"Fix swallowed apple server errors (#1338)"}},{"before":"ce93fb633ba82b3e6e03efa1788687b441f38bfa","after":"b4c3c89821b8356f466c112e22193e8bfd32100d","ref":"refs/heads/master","pushedAt":"2024-02-24T02:12:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jzacsh","name":"Jonathan Zacsh","path":"/jzacsh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/156228?s=80&v=4"},"commit":{"message":"nitfix: encode high-precision stamp from docs (#1337)\n\nOnce encoding a high-precision stamp in the docs we see the unit test\r\nfails because we're using a differet parsers than the unit test itself.\r\nDocument what we're using and make it visible for testing.","shortMessageHtmlLink":"nitfix: encode high-precision stamp from docs (#1337)"}},{"before":"770c0841734183401f50fdd8e47cdfea0ee44bea","after":"ce93fb633ba82b3e6e03efa1788687b441f38bfa","ref":"refs/heads/master","pushedAt":"2024-02-23T23:30:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aksingh737","name":null,"path":"/aksingh737","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/130187841?s=80&v=4"},"commit":{"message":"bugfix: use correct time; fix brittle unit test (#1336)\n\nthis is fixing a single time-mishandling issue that uncovered two\r\northogonal problems:\r\n\r\n- 1. \"correct time\" issue: json parsing dropped timezone/offset\r\n specifiers as we were using a hand-crafted formatter string. Switching\r\n us to a standard library one that accepts both `Z` alias (for\r\n greenwhich) and offsets (like `+00:00`). Gphotos api docs[a] (inlined\r\n into the code) shows we use the former, which is what the unit test\r\n uses as well.\r\n - this probably meant time metadata for content transferred was off by\r\n some number of due to timezone being dropped\r\n- 2. \"brittle unit test\": unit test was relying on machine-specific\r\n `gradle test` behavior, so an out of the box `git checkout master` had\r\n two failing tests for me[b] but not for our github ci/cd.\r\n - this was due to use of `toString()` (in our assertEquals) which relies on your locale\r\n - fixed now as we use `java.time.Instant#equals` instead.\r\n\r\n[a]: https://developers.google.com/photos/library/reference/rest/v1/mediaItems#mediametadata lists `creationTime` as:\r\n> string (Timestamp format)\r\n>\r\n> Time when the media item was first created (not when it was uploaded\r\n> to Google Photos).\r\n>\r\n> A timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution\r\n> and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and\r\n> \"2014-10-02T15:01:23.045123456Z\".\r\n\r\n[b]: local unit test failure looked like this for me (I'm in midwest US):\r\n```\r\norg.opentest4j.AssertionFailedError:\r\n expected: \r\n but was: \r\n```","shortMessageHtmlLink":"bugfix: use correct time; fix brittle unit test (#1336)"}},{"before":null,"after":"6c5d05b0b603a04fd0ba472b083fabbc309d2227","ref":"refs/heads/dependabot/npm_and_yarn/client-rest/ip-1.1.9","pushedAt":"2024-02-22T03:09:14.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump ip from 1.1.8 to 1.1.9 in /client-rest\n\nBumps [ip](https://github.com/indutny/node-ip) from 1.1.8 to 1.1.9.\n- [Commits](https://github.com/indutny/node-ip/compare/v1.1.8...v1.1.9)\n\n---\nupdated-dependencies:\n- dependency-name: ip\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump ip from 1.1.8 to 1.1.9 in /client-rest"}},{"before":"b5871435d43dfeca250035084eb1ed2afb9d3dc0","after":"770c0841734183401f50fdd8e47cdfea0ee44bea","ref":"refs/heads/master","pushedAt":"2024-02-16T04:58:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jzacsh","name":"Jonathan Zacsh","path":"/jzacsh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/156228?s=80&v=4"},"commit":{"message":"add Apple DTP import operation group (#1313)\n\nCo-authored-by: Jonathan Zacsh ","shortMessageHtmlLink":"add Apple DTP import operation group (#1313)"}},{"before":"c787122ae7f0d14a58c49483a0e37fd681c8eb70","after":"b5871435d43dfeca250035084eb1ed2afb9d3dc0","ref":"refs/heads/master","pushedAt":"2024-02-14T12:11:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"alexeyqu-fb","name":"Alex Kulikov","path":"/alexeyqu-fb","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/86608180?s=80&v=4"},"commit":{"message":"feat: add userAlias field to PortabilityJob class (#1334)\n\n* add userAlias field\r\n\r\n* unfix tests","shortMessageHtmlLink":"feat: add userAlias field to PortabilityJob class (#1334)"}},{"before":"6fe2178e56cb12db02eb9edc4dab791d1795fa4a","after":"c787122ae7f0d14a58c49483a0e37fd681c8eb70","ref":"refs/heads/master","pushedAt":"2024-02-05T20:33:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aksingh737","name":null,"path":"/aksingh737","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/130187841?s=80&v=4"},"commit":{"message":"add log to investigate missing upload date in Google -> Apple Photos transfer (#1333)","shortMessageHtmlLink":"add log to investigate missing upload date in Google -> Apple Photos …"}},{"before":"8dc02feebf21caffc260db2659a791333cfa5a1d","after":"6fe2178e56cb12db02eb9edc4dab791d1795fa4a","ref":"refs/heads/master","pushedAt":"2024-02-01T19:13:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jzacsh","name":"Jonathan Zacsh","path":"/jzacsh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/156228?s=80&v=4"},"commit":{"message":"Preserve filenames when importing items (#1332)\n\nPreserving filenames when importing items by populting filename field for SimpleMediaItem","shortMessageHtmlLink":"Preserve filenames when importing items (#1332)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAERsPyNQA","startCursor":null,"endCursor":null}},"title":"Activity · google/data-transfer-project"}