{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":60379785,"defaultBranch":"master","name":"mojito","ownerLogin":"box","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-06-03T21:50:33.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/23900?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1718002349.0","currentOid":""},"activityList":{"items":[{"before":"24e942123c951d7a81bbbc4d746a98c061db68be","after":"afc3b1d6439436f318240e5458c0ae9b5da0d47b","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-27T21:16:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Refactor AndroidString classes to be able to apply proper and consistent escaping.\n\nThis also greatly simplify the logic","shortMessageHtmlLink":"Refactor AndroidString classes to be able to apply proper and consist…"}},{"before":"474f244209895c4e28db93835b826f212b2a3752","after":"24e942123c951d7a81bbbc4d746a98c061db68be","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-27T18:27:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Refactor AndroidString classes to be able to apply proper and consistent escaping.\n\nThis also greatly simplify the logic","shortMessageHtmlLink":"Refactor AndroidString classes to be able to apply proper and consist…"}},{"before":"629debee6c193126b0351d9337b5e6ace5938e52","after":"474f244209895c4e28db93835b826f212b2a3752","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-27T07:39:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Refactor AndroidString classes to be able to apply proper and consistent escaping.\n\nThis also greatly simplify the logic","shortMessageHtmlLink":"Refactor AndroidString classes to be able to apply proper and consist…"}},{"before":"3ab619ae8c1e91a03c4691490831ee0da5f2bbbf","after":"629debee6c193126b0351d9337b5e6ace5938e52","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-23T21:40:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Add an option to GithubCreatePRCommand to add labels\n\nA list of labels can be added when the PR is created","shortMessageHtmlLink":"Add an option to GithubCreatePRCommand to add labels"}},{"before":"c168aa9b5540a52833d4350b2e8adee71729cb23","after":"3ab619ae8c1e91a03c4691490831ee0da5f2bbbf","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-20T07:22:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Re-implement Phrase String file upload since SDK does not accept format options","shortMessageHtmlLink":"Re-implement Phrase String file upload since SDK does not accept form…"}},{"before":"be02edf01a57f07f997650a3564f9e7a299e57e3","after":"c168aa9b5540a52833d4350b2e8adee71729cb23","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-20T07:21:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Re-implement Phrase String file upload since SDK does not accept format options","shortMessageHtmlLink":"Re-implement Phrase String file upload since SDK does not accept form…"}},{"before":"22435e8814c65e09fa9674b15dc0ae781b6674ef","after":"be02edf01a57f07f997650a3564f9e7a299e57e3","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-17T23:51:43.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Add Github \"enable auto merge\" PR option\n\nThis is using the GraphQL API since it is not available in the Java client.","shortMessageHtmlLink":"Add Github \"enable auto merge\" PR option"}},{"before":"fa737b217f19303232caa709dbc97585744eb0db","after":"22435e8814c65e09fa9674b15dc0ae781b6674ef","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-16T05:05:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Improve URLIntegrityChecker\n\nSupport sub domains","shortMessageHtmlLink":"Improve URLIntegrityChecker"}},{"before":"410ef5e0594e95bb19953c96f7bcc60686a9fd5f","after":"fa737b217f19303232caa709dbc97585744eb0db","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-13T19:01:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Improve HtmlTagIntegrityChecker and reporting","shortMessageHtmlLink":"Improve HtmlTagIntegrityChecker and reporting"}},{"before":"e03520b18f8d3899ff486b80b1e8d9f56772ab9e","after":"410ef5e0594e95bb19953c96f7bcc60686a9fd5f","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-13T07:56:49.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Support user creation for Oicd authentication\n\nThis is similar to UserDetailImplOAuth2UserService though in that case it is simpler and just reuses the parent class to get an OicdUser and then convert it into a UserDetailsImpl.\n\nAdd a username-from-email config. In case the principal ID form the auth provider is a UUID, it is of little use on the Mojito side for tasks such as sending notifications, associating with Git commit, PRs, etc. With this option, the username is extracted from the email. This assumes a 1:1 mapping between the email and the Unix username\n\nConsidered saving the email in the user, but for simplicity we just need a username that is unix like for now.\n\nNote: UserDetailImplOAuth2UserService probably duplicated the code to support the \"unwrapping\" of the user attribute. The logic was probably failing before being able to do the conversion","shortMessageHtmlLink":"Support user creation for Oicd authentication"}},{"before":"be86e971444cf7ddc9751ed21edb619e7537cb46","after":"e03520b18f8d3899ff486b80b1e8d9f56772ab9e","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-07T02:09:03.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Add command to create pull request in Github\n\nThis is exploratory to see if we can avoid having to install the GH CLI or make curl command","shortMessageHtmlLink":"Add command to create pull request in Github"}},{"before":"9ab2f636b643388a18efad3b636a145e10ec8976","after":"be86e971444cf7ddc9751ed21edb619e7537cb46","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-06T04:32:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Add command to create pull request in Github\n\nThis is exploratory to see if we can avoid having to install the GH CLI or make curl command","shortMessageHtmlLink":"Add command to create pull request in Github"}},{"before":"3753ca9bed38cfd6f20c4351c8b383ac95510b29","after":"9ab2f636b643388a18efad3b636a145e10ec8976","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-06T04:32:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Add command to create pull request in Github\n\nThis is exploratory to see if we can avoid having to install the GH CLI or make curl command","shortMessageHtmlLink":"Add command to create pull request in Github"}},{"before":"a3ffeb39f1e4f3bf6e21a77ae2623ece8c27cbe9","after":"3753ca9bed38cfd6f20c4351c8b383ac95510b29","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-05T04:48:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Add command to create pull request in Github\n\nThis is exploratory to see if we can avoid having to install the GH CLI or make curl command","shortMessageHtmlLink":"Add command to create pull request in Github"}},{"before":"b36eb36cf2707b8d9e9f359145b7fcb31a21e51a","after":"a3ffeb39f1e4f3bf6e21a77ae2623ece8c27cbe9","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-09-03T22:23:02.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Support \"dash\" in HtmlTagIntegrityChecker","shortMessageHtmlLink":"Support \"dash\" in HtmlTagIntegrityChecker"}},{"before":"fd859f0520e418b27ac1a7adde73d04b3673d677","after":"b36eb36cf2707b8d9e9f359145b7fcb31a21e51a","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-31T03:28:42.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Add post-processing to AndroidFilter to remove non-translatable elements\n\nIntroduced a new post-processing option, postRemoveTranslatableFalse, in AndroidFilter.\n\nThis option removes elements with the attribute translatable=\"false\", ensuring only translatable elements are written to the output.\n\nNote: This does not prevent these elements from being pushed to Mojito, this is a post-processing step.\n\nDue to an existing bug in the filter, singular elements are properly excluded from translation, but plural ones are not (to fix later).\n\nBut excluded elements from translation in Mojito are still outputted, while this new option ensures they are removed from the final output.\n\nTypically used with pull -fo postRemoveTranslatableFalse=true.","shortMessageHtmlLink":"Add post-processing to AndroidFilter to remove non-translatable elements"}},{"before":"cac2eab474923eea2ad3d22e28ee24b658f61ed3","after":"fd859f0520e418b27ac1a7adde73d04b3673d677","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-28T22:15:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Make integrity check messages more specific","shortMessageHtmlLink":"Make integrity check messages more specific"}},{"before":"0e0c1fcdfca2892bf78f2a987dd600ce0ea99053","after":"cac2eab474923eea2ad3d22e28ee24b658f61ed3","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-28T21:48:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Make integrity check messages more specific","shortMessageHtmlLink":"Make integrity check messages more specific"}},{"before":"4842a432af37aad53027be16571051c4aa3e05c7","after":"0e0c1fcdfca2892bf78f2a987dd600ce0ea99053","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-28T21:12:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"fixup! Add option to remove existing third party mapping when synchronizing","shortMessageHtmlLink":"fixup! Add option to remove existing third party mapping when synchro…"}},{"before":"fc7825e8330d93c25d3ece10374397661dc561b2","after":"4842a432af37aad53027be16571051c4aa3e05c7","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-28T20:33:59.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Make integrity check messages more specific","shortMessageHtmlLink":"Make integrity check messages more specific"}},{"before":"ba533d76935f5fdd5cc5613c749c9b89cb25297a","after":"fc7825e8330d93c25d3ece10374397661dc561b2","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-28T19:03:05.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Make integrity check messages more specific","shortMessageHtmlLink":"Make integrity check messages more specific"}},{"before":"403a18785d058c5956438f0526bf9c83ad8176bc","after":"ba533d76935f5fdd5cc5613c749c9b89cb25297a","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-28T19:01:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Make integrity check messages more specific","shortMessageHtmlLink":"Make integrity check messages more specific"}},{"before":"6cfba857e6edcfa51ea24735500503291594e566","after":"403a18785d058c5956438f0526bf9c83ad8176bc","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-28T14:59:58.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Add option to remove existing third party mapping when synchronizing\n\nIn some Translation Management Systems (TMS), string IDs may need to be remapped. This is particularly necessary when strings with the same \"key\" are removed and then recreated, often due to incorrect handling. Different TMS systems handle this differently: some use soft deletion, while others create a completely new entry with a new ID. In these cases, a new mapping is required.","shortMessageHtmlLink":"Add option to remove existing third party mapping when synchronizing"}},{"before":"058bca915f36524e2711b44e14a892a8f603efaf","after":"6cfba857e6edcfa51ea24735500503291594e566","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-27T23:27:24.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Add option to override translation status during import\n\nCurrently, if the target has not changed, we retain the status to ensure that a false positive \"rejected\" string can be marked as \"accepted.\"\n\nHowever, this approach has a drawback: if a new integrity check is added that would cause a failure, the strings remain marked as \"accepted\" rather than being updated to \"rejected.\"\n\nWe are adding this option to allow for a complete re-application of the checks. The downside is that any false positives will need to be re-marked as \"accepted.\"","shortMessageHtmlLink":"Add option to override translation status during import"}},{"before":"2c3fe65eae803eb08d7ba0fba33d6cd8d6e778e8","after":"058bca915f36524e2711b44e14a892a8f603efaf","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-27T16:32:08.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"fixup! Introduce generic OptionsParser","shortMessageHtmlLink":"fixup! Introduce generic OptionsParser"}},{"before":"73e384a18ca969ebeff02f9edbb595a421823616","after":"2c3fe65eae803eb08d7ba0fba33d6cd8d6e778e8","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-27T16:12:42.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Add option to override translation status during import\n\nCurrently, if the target has not changed, we retain the status to ensure that a false positive \"rejected\" string can be marked as \"accepted.\"\n\nHowever, this approach has a drawback: if a new integrity check is added that would cause a failure, the strings remain marked as \"accepted\" rather than being updated to \"rejected.\"\n\nWe are adding this option to allow for a complete re-application of the checks. The downside is that any false positives will need to be re-marked as \"accepted.\"","shortMessageHtmlLink":"Add option to override translation status during import"}},{"before":"409889ad8c678a088baf2e7437829ae41ac0edc3","after":"73e384a18ca969ebeff02f9edbb595a421823616","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-27T04:34:34.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Add URLIntegrityChecker for standalone URLs\n\nBasic URL matcher for plain text, or for simple format.","shortMessageHtmlLink":"Add URLIntegrityChecker for standalone URLs"}},{"before":"2c7577382495adb69e42507d178f3f45f51b2c41","after":"409889ad8c678a088baf2e7437829ae41ac0edc3","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-26T20:40:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Add integrity checker for emails","shortMessageHtmlLink":"Add integrity checker for emails"}},{"before":"4682331edf1a3229458690546ecdf077357ea9fd","after":"2c7577382495adb69e42507d178f3f45f51b2c41","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-26T18:31:39.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Add integrity checker for emails","shortMessageHtmlLink":"Add integrity checker for emails"}},{"before":"63bd39796374f5077299e53c065c5b382488d006","after":"4682331edf1a3229458690546ecdf077357ea9fd","ref":"refs/heads/ja/phrase-connector","pushedAt":"2024-08-23T21:18:31.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"aurambaj","name":"Jean Aurambault","path":"/aurambaj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9702182?s=80&v=4"},"commit":{"message":"Add test for translatable=false in Android plurals string\n\nContrary to simple strings, \"plural\" strings are not properly skipped","shortMessageHtmlLink":"Add test for translatable=false in Android plurals string"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0yN1QyMToxNjozNy4wMDAwMDBazwAAAATDByKy","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0yM1QyMToxODozMS4wMDAwMDBazwAAAASivEEI"}},"title":"Activity · box/mojito"}