{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":3555504,"defaultBranch":"master","name":"weechat-android","ownerLogin":"ubergeek42","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2012-02-26T22:50:59.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/672279?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1710607983.0","currentOid":""},"activityList":{"items":[{"before":"70749dad3b4e6ec5080c0d1a8c34352ef5481781","after":"d832d3bc42d6a590ab6e4221d4d5d1d81a778f1d","ref":"refs/heads/do-not-move-hot-buffers","pushedAt":"2024-03-23T14:24:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Streamline bell icon badge updates\n\nThe code is spaghetti, sigh.","shortMessageHtmlLink":"Streamline bell icon badge updates"}},{"before":"8e790f895c7eb1f08c557c41ad8bda42a3406556","after":"70749dad3b4e6ec5080c0d1a8c34352ef5481781","ref":"refs/heads/do-not-move-hot-buffers","pushedAt":"2024-03-22T14:35:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Streamline bell icon badge updates\n\nThe code is spaghetti, sigh.","shortMessageHtmlLink":"Streamline bell icon badge updates"}},{"before":null,"after":"8e790f895c7eb1f08c557c41ad8bda42a3406556","ref":"refs/heads/do-not-move-hot-buffers","pushedAt":"2024-03-16T16:53:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Add an option to not put hot buffers on top\n\nThis changes the boolean preference “Sort buffer list” to a list preference,\nwith an option to only sort buffers by number.\n\nThis does NOT migrate the old setting!\n\nAlso, this changes `sortByHotAndMessageCountComparator` to also sort by\nnumber. Not sorting by number could result in buffers appearing out of order\nif they were moved. Not a big issue.\n\nCloses #541","shortMessageHtmlLink":"Add an option to not put hot buffers on top"}},{"before":null,"after":"cc88820e8c39233f33f3f4ea2e02933b33fb34d4","ref":"refs/heads/fix-emojicompat","pushedAt":"2024-03-09T17:53:05.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Also replace old emojis when emojifying with `EmojiCompat`\n\nBy default, `EmojiCompat` only adds emoji glyphs for those emojis that are\ncurrently missing in the platform, which results in mismatched emoji styles.\nThis change makes all emojis appear in modern style.","shortMessageHtmlLink":"Also replace old emojis when emojifying with EmojiCompat"}},{"before":"da63de36025af26116e4a2a747b0bcedd2c126ef","after":"f3da88c7d7abfe5ea3e46d8ebb908e5a907c27eb","ref":"refs/heads/master","pushedAt":"2024-03-09T17:42:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Call `setSilent` for notifications that should not make noise\n\nIt's a new-ish API, added in 1.5.0 as a replacement for\n`setNotificationSilent`, added in 1.3.0 (2020), which is doing the same.\n\nCloses #529","shortMessageHtmlLink":"Call setSilent for notifications that should not make noise"}},{"before":"ba5f9c1e5e8d619be95d27f3102ffec8d30ee5f0","after":"f49f919701666ecb6282bc80885d488250007ced","ref":"refs/heads/encrypt-passwords","pushedAt":"2024-03-08T18:36:27.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Add backup rules\n\nI would prefer to only use the `include` rules, but this is quite hard when\nit comes to shared preferences. The problem is that the default shared\npreferences file name contains the application id. While it is possible to\nuse application id placeholder in the manifest, it is not currently possible\nin the resource files. It is also apparently not possible to use string\nresources, it just does not work. We could also use a Gradle plugin that\ngives us placeholder replacements, but Android Stem seems to be only parsing\nstring resources, which is neat but doesn't fit our use. The only feasible\nway here would be duplicating the resources for every build variant.\n\nRules for API ≤ 30 can be tested with the following Bash script,\nwhich is a modified version of the script suitable for > 30 found here:\nat https://developer.android.com/guide/topics/data/testingbackup\n\n #!/bin/bash -eu\n : \"${1?\"Usage: $0 package name\"}\"\n\n adb shell bmgr enable true\n\n # $ adb shell bmgr list transports\n # android/com.android.internal.backup.LocalTransport\n # com.google.android.gms/.backup.BackupTransportService\n adb shell bmgr transport android/com.android.internal.backup.LocalTransport | grep -q \"Selected transport\" || (echo \"Error: error selecting local transport\"; exit 1)\n\n adb shell settings put secure backup_local_transport_parameters 'is_encrypted=true'\n adb shell bmgr backupnow \"$1\" | grep -F \"Package $1 with result: Success\" || (echo \"Backup failed\"; exit 1)\n\n apk_path_list=$(adb shell pm path \"$1\")\n OIFS=$IFS\n IFS=$'\\n'\n apk_number=0\n for apk_line in $apk_path_list\n do\n (( ++apk_number ))\n apk_path=${apk_line:8:1000}\n # MSYS_NO_PATHCONV=1 allows running this script in Git Bash\n # Copy before pulling to avoid “remote object ... does not exist” errors\n # See this answer josemigallas https://stackoverflow.com/questions/41150038/#43157127\n MSYS_NO_PATHCONV=1 adb shell cp \"$apk_path\" \"/storage/emulated/0/Download/temp_base.apk\"\n MSYS_NO_PATHCONV=1 adb pull \"/storage/emulated/0/Download/temp_base.apk\" \"myapk${apk_number}.apk\"\n done\n IFS=$OIFS\n adb shell pm uninstall --user 0 \"$1\"\n apks=$(seq -f 'myapk%.f.apk' 1 $apk_number)\n\n adb install -t \"$apks\"\n\n adb shell bmgr transport com.google.android.gms/.backup.BackupTransportService\n rm $apks\n\n echo \"Done\"","shortMessageHtmlLink":"Add backup rules"}},{"before":null,"after":"966771ae54014655196291c20e84c7af25fb1509","ref":"refs/heads/encrypt-passwords-test","pushedAt":"2024-02-25T14:20:00.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Add backup rules\n\nTest commit","shortMessageHtmlLink":"Add backup rules"}},{"before":"728fcc638325f61b37c50a64e0f33be02bfcb12c","after":"8a4c9d608b970f7ae1f1d9e1b6935d4c4fb17fe8","ref":"refs/heads/handle-buffer-cleared","pushedAt":"2024-02-23T17:34:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"On lines listed, also diff line contents\n\nWhen buffer is cleared using `/buffer clear` and more lines are added,\nline pointers may be reused. Before, if the app was disconnected during\nthese events, after reconnection it was possible for the lines to appear out\nof order. This happened because normally we calculate diff using pointers\nonly, and if we had an older line with the same pointer as the newer one,\nthe adapter would reuse the old view holder, which might've been displaying\nthe wrong line.\n\nThis fixes the issue by also looking at line contents while diffing.\n\nThis solution is not ideal:\n\n* While we can reliably tell whether the contents of two lines are the same,\n during the diffing we also want to know whether two lines represent the\n same thing, even if the contents have changed. As the pointer can be\n reused, sometimes `areItemsTheSame` will return a false positive. However,\n with this change the negative effect of this shouldn't go beyond wrong\n animation being applied.\n\n* Read marker may appear in a wrong place. We save the pointer to the last\n read line locally, and if the pointer is reused, there's no way for us to\n tell that the line is wrong.\n\nFixes #577","shortMessageHtmlLink":"On lines listed, also diff line contents"}},{"before":"b515db3a7ea22f9445f03f795639ddaf4cc05995","after":"728fcc638325f61b37c50a64e0f33be02bfcb12c","ref":"refs/heads/handle-buffer-cleared","pushedAt":"2024-02-23T17:31:28.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"On lines listed, also diff line contents\n\nWhen buffer is cleared using `/buffer clear` and more lines are added,\nline pointers may be reused. Before, if the app was disconnected during\nthese events, after reconnection it was possible for the lines to appear out\nof order. This happened because normally we calculate diff using pointers\nonly, and if we had an older line with the same pointer as the newer one,\nthe adapter would reuse the old view holder, which might've been displaying\nthe wrong line.\n\nThis fixes the issue by also looking at line contents while diffing.\n\nThis solution is not ideal:\n\n* While we can reliably tell whether the contents of two lines are the same,\n during the diffing we also want to know whether two lines represent the\n same thing, even if the contents have changed. As the pointer can be\n reused, sometimes `areItemsTheSame` will return a false positive. However,\n with this change the negative effect of this shouldn't go beyond wrong\n animation being applied.\n\n* Read marker may appear in a wrong place. We save the pointer to the last\n read line locally, and if the pointer is reused, there's no way for us to\n tell that the line is wrong.\n\nFixes #577","shortMessageHtmlLink":"On lines listed, also diff line contents"}},{"before":null,"after":"b515db3a7ea22f9445f03f795639ddaf4cc05995","ref":"refs/heads/handle-buffer-cleared","pushedAt":"2024-02-23T15:40:41.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"On lines listed, also diff line contents\n\nWhen buffer is cleared using `/buffer clear` and more lines are added,\nline pointers may be reused. Before, if the app was disconnected during\nthese events, after reconnection lines may visually appear out of order.\nThis happened because normally we calculate diff using pointers only,\nand if we had an older line with the same pointer as the newer one,\nthe adapter would reuse the old view holder, which might've been displaying\nthe wrong line.\n\nThis fixes the issue by also looking at line contents while diffing.\n\nThis solution is not ideal:\n\n* While we can reliably tell whether the contents\n of two lines are the same, during the diffing we also want to know\n whether two lines represent the same thing, even if the contents have\n changed. As the pointer can be reused, sometimes `areItemsTheSame` will\n return a false positive. However, with this change the negative effect of\n this shouldn't go beyond wrong animation being applied.\n\n* Read marker may appear in a wrong place. We save the pointer to the last\n read line locally, and if the pointer is reused, there's no way for us to\n tell that the line is wrong.\n\nFixes #577","shortMessageHtmlLink":"On lines listed, also diff line contents"}},{"before":"0ca9cbcb33702affb9bedd36eee4c9999d351901","after":"da63de36025af26116e4a2a747b0bcedd2c126ef","ref":"refs/heads/master","pushedAt":"2024-02-23T15:28:43.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Add comment on `android.nonFinalResIds=false`","shortMessageHtmlLink":"Add comment on android.nonFinalResIds=false"}},{"before":null,"after":"ba5f9c1e5e8d619be95d27f3102ffec8d30ee5f0","ref":"refs/heads/encrypt-passwords","pushedAt":"2024-02-18T13:45:43.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Encrypt SSH password & key","shortMessageHtmlLink":"Encrypt SSH password & key"}},{"before":null,"after":"da63de36025af26116e4a2a747b0bcedd2c126ef","ref":"refs/heads/gradle-8","pushedAt":"2024-02-18T13:44:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Add comment on `android.nonFinalResIds=false`","shortMessageHtmlLink":"Add comment on android.nonFinalResIds=false"}},{"before":"52f6beffd70652e783b325af225b65415bc68ad6","after":"0ca9cbcb33702affb9bedd36eee4c9999d351901","ref":"refs/heads/master","pushedAt":"2024-02-03T12:17:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Bump version to 1.9","shortMessageHtmlLink":"Bump version to 1.9"}},{"before":"30637df1d6c1ada3a4bac7b9ebb2ad1d8451e47f","after":null,"ref":"refs/tags/v1.9","pushedAt":"2024-02-03T11:35:11.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"}},{"before":"f85f0521d503974df2f8fe07d4c024917278173e","after":"52f6beffd70652e783b325af225b65415bc68ad6","ref":"refs/heads/master","pushedAt":"2024-02-02T16:59:23.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Bump version to 1.9","shortMessageHtmlLink":"Bump version to 1.9"}},{"before":"29c0514f26eee77a63d3c0f44b5610895320648d","after":null,"ref":"refs/tags/v1.9","pushedAt":"2024-02-02T16:58:13.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"}},{"before":"1501f874a2e3e2c7b4f6ba32f5cd62e2d76efca1","after":"f85f0521d503974df2f8fe07d4c024917278173e","ref":"refs/heads/master","pushedAt":"2024-02-02T14:44:46.000Z","pushType":"push","commitsCount":35,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Bump version to 1.9","shortMessageHtmlLink":"Bump version to 1.9"}},{"before":"f795384fcf76528382298c622469ac3095f51fa3","after":"8fb7fa71ebb360efbddb1fd1848ed8eace6303f5","ref":"refs/heads/v1.9-dev","pushedAt":"2024-01-28T13:24:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Merge branch 'sdk-34' into v1.9-dev","shortMessageHtmlLink":"Merge branch 'sdk-34' into v1.9-dev"}},{"before":"306496f44ccd767ae486d10b7c43dd9f9176b217","after":"0ea489d9e3aa85cabe3ca70f6cc7ca6b7fcdd66e","ref":"refs/heads/improve-sharing","pushedAt":"2024-01-28T13:13:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Record input change after drag-n-drop\n\nIn buffer fragments, we are saving input for parallel fragments\n(i.e. bubbles) on pause and restoring it on resume. On some systems,\nparticularly on API 27, it's possible that, when dragging from another app,\nthe target activity isn't actually resumed, hence this input change may fail\nto be recorded. To prevent this, explicitly record the change after loading\nthe thumbnails.\n\nThis includes a long-postponed conversion of thumbnail logic to coroutines.\nThis facilitates waiting until the thumbnails are actually loaded and\napplied to the string.","shortMessageHtmlLink":"Record input change after drag-n-drop"}},{"before":"a5ef5e8c58ad3db3e9d0d7dd7999af50e6961b8e","after":"f795384fcf76528382298c622469ac3095f51fa3","ref":"refs/heads/v1.9-dev","pushedAt":"2024-01-19T16:32:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Merge branch 'sdk-34' into v1.9-dev","shortMessageHtmlLink":"Merge branch 'sdk-34' into v1.9-dev"}},{"before":null,"after":"a5ef5e8c58ad3db3e9d0d7dd7999af50e6961b8e","ref":"refs/heads/v1.9-dev","pushedAt":"2024-01-14T18:24:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Merge branch 'sdk-34' into v1.9-dev","shortMessageHtmlLink":"Merge branch 'sdk-34' into v1.9-dev"}},{"before":"ff1a0dde036f85644bcef7881de4381d64548d63","after":"7a4defdaf5cf388d0ecf776980e246e6eeb11cb8","ref":"refs/heads/input-history-translations","pushedAt":"2024-01-14T18:10:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Update translations\n\nCo-authored-by: Nils Görs \nCo-authored-by: TehPeGaSuS <25697531+TehPeGaSuS@users.noreply.github.com>","shortMessageHtmlLink":"Update translations"}},{"before":"26949a8615bff58eeaf82bdfba73dc88f4304446","after":"2f8192ff0ccc57e595bbb8ceeadd123b49d3b130","ref":"refs/heads/exact-alarm","pushedAt":"2024-01-14T18:10:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Update translations\n\nCo-authored-by: Alexandre Macabies \nCo-authored-by: Nils Görs \nCo-authored-by: TehPeGaSuS <25697531+TehPeGaSuS@users.noreply.github.com>","shortMessageHtmlLink":"Update translations"}},{"before":null,"after":"306496f44ccd767ae486d10b7c43dd9f9176b217","ref":"refs/heads/improve-sharing","pushedAt":"2023-12-26T14:23:29.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Insert spaces around share spans when textifying\n\nWhen inserting images & other media into the chat input, we add spaces\naround it to make sure the text doesn't touch the resulting URL. But if the\nuser edits the text after, the text might touch the image again. This\nsometimes is hard to see, especially if the thumbnail and the text are on\nseparate lines.\n\nTo overcome this, also insert spaces around the URL when textifying.","shortMessageHtmlLink":"Insert spaces around share spans when textifying"}},{"before":null,"after":"26949a8615bff58eeaf82bdfba73dc88f4304446","ref":"refs/heads/exact-alarm","pushedAt":"2023-12-26T14:00:18.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"oakkitten","name":null,"path":"/oakkitten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1710718?s=80&v=4"},"commit":{"message":"Fix an R8 warning about missing class","shortMessageHtmlLink":"Fix an R8 warning about missing class"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEHXnPQAA","startCursor":null,"endCursor":null}},"title":"Activity · ubergeek42/weechat-android"}