{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":58910762,"defaultBranch":"master","name":"rbintegrations","ownerLogin":"reviewboard","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-05-16T06:59:38.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/118199?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1719901674.0","currentOid":""},"activityList":{"items":[{"before":"0502c1a3a913b77793f2f8ae6186b4de9739ae53","after":"6cafe62c62353aeea49411342440f07140873773","ref":"refs/heads/master","pushedAt":"2024-09-03T15:39:19.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"davidt","name":"David Trowbridge","path":"/davidt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2240?s=80&v=4"},"commit":{"message":"Merge branch 'release-4.x'","shortMessageHtmlLink":"Merge branch 'release-4.x'"}},{"before":"fd1988671451da05382de317ad795254b9f6d31b","after":"18437be16cd4c30cd98e367dc7259edcd5dccb9c","ref":"refs/heads/release-4.x","pushedAt":"2024-09-03T15:39:12.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"davidt","name":"David Trowbridge","path":"/davidt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2240?s=80&v=4"},"commit":{"message":"Merge branch 'release-3.x' into release-4.x","shortMessageHtmlLink":"Merge branch 'release-3.x' into release-4.x"}},{"before":"9e64598c7410cf34449255c9a6ec2dc5cbb7c760","after":"2185d8c955295c642f105bc4a55a469410ca2bcb","ref":"refs/heads/release-3.x","pushedAt":"2024-09-03T15:36:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"davidt","name":"David Trowbridge","path":"/davidt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2240?s=80&v=4"},"commit":{"message":"Delete obsolete empty review tests.\n\nWe had several test cases for notifications to handle the case of empty\nreviews. We now have validation on the publish side that prevents\npublishing these at all, so these tests were failing. Remove them.\n\nTesting Done:\nRan unit tests.\n\nReviewed at https://reviews.reviewboard.org/r/13634/","shortMessageHtmlLink":"Delete obsolete empty review tests."}},{"before":"3f7fdb0d54aecbd9faabd23cc3a9acc2472ca60c","after":"9e64598c7410cf34449255c9a6ec2dc5cbb7c760","ref":"refs/heads/release-3.x","pushedAt":"2024-08-25T06:14:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"chipx86","name":"Christian Hammond","path":"/chipx86","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4063?s=80&v=4"},"commit":{"message":"Update for new pytest-based test runner.\n\nThis adds the conftest.py and setup.cfg needed to run the rbintegrations\ntest suite with pytest (either by running `rbext test -m rbintegrations`\nor just `pytest`).\n\nTesting Done:\nRan unit tests.\n\nReviewed at https://reviews.reviewboard.org/r/13631/","shortMessageHtmlLink":"Update for new pytest-based test runner."}},{"before":"dba01f0cdff2365691dd07d3f3b77aded2126a84","after":"0502c1a3a913b77793f2f8ae6186b4de9739ae53","ref":"refs/heads/master","pushedAt":"2024-07-02T06:27:52.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"chipx86","name":"Christian Hammond","path":"/chipx86","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4063?s=80&v=4"},"commit":{"message":"Merge branch 'release-4.x'","shortMessageHtmlLink":"Merge branch 'release-4.x'"}},{"before":"e6c877793ff4107aed4f05a3003ce21b676e0d29","after":"fd1988671451da05382de317ad795254b9f6d31b","ref":"refs/heads/release-4.x","pushedAt":"2024-07-02T06:27:52.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"chipx86","name":"Christian Hammond","path":"/chipx86","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4063?s=80&v=4"},"commit":{"message":"Update the README do not specify Review Board 5.0 explicitly.\n\nThe docs referenced Review Board 5.0+ as the supported range, but this\ninformation isn't really current or useful anymore. We now list\nReview Board more generally.","shortMessageHtmlLink":"Update the README do not specify Review Board 5.0 explicitly."}},{"before":"56a0e70111e0729fad28867a30a190acca50aa1d","after":"e6c877793ff4107aed4f05a3003ce21b676e0d29","ref":"refs/heads/release-4.x","pushedAt":"2024-07-02T06:20:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"chipx86","name":"Christian Hammond","path":"/chipx86","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4063?s=80&v=4"},"commit":{"message":"Add release notes for Integrations 4.0.1.\n\nThis is a small bug fix release that addresses compatibility issues with\nAsana.\n\nTesting Done:\nBuilt the docs. Checked for build errors, spelling errors, and bad links.\n\nReviewed at https://reviews.reviewboard.org/r/14005/","shortMessageHtmlLink":"Add release notes for Integrations 4.0.1."}},{"before":"9dba504a945c892568fdd0068cd4355e040cc27c","after":"56a0e70111e0729fad28867a30a190acca50aa1d","ref":"refs/heads/release-4.x","pushedAt":"2024-06-29T18:56:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"davidt","name":"David Trowbridge","path":"/davidt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2240?s=80&v=4"},"commit":{"message":"Fix and modernize Asana integration.\n\nOur Asana integration was broken because they completely rewrote their\nPython API. This change fixes that up, and modernizes things a bit.\nHere's the full scope of changes:\n\n- Pin the asana dependency version so this doesn't happen again.\n- Update our API calls for the new version.\n- Updated Python and JS code to add type hints and use spina where\n appropriate.\n- Updated the CSS to support dark mode for the field contents (when not\n in edit mode).\n- Overrode some CSS for the selectize field while editing to allow the\n contents to fill the available space, and wrap items within the field\n rather than showing everything in a single line.\n- Tweaked some of the sizes and spacing for task items to look nicer.\n\nOnce we end up creating our own autocomplete controls, I'd really like\nto ditch selectize. For now, this is a big improvement on what we had.\n\nTesting Done:\n- Ran setup.py develop\n- Added an Asana integration. Verified that putting in a correct\n personal access token loaded the workspaces, and that an incorrect one\n showed an error.\n- Tested searching for and adding tasks.\n- Tested removing tasks.\n- Tested that wrapping worked correctly within the selectize field, and\n that moving the cursor and editing within the wrapped field worked\n correctly.\n- Verified the appearance in both light and dark modes.\n\nReviewed at https://reviews.reviewboard.org/r/13991/","shortMessageHtmlLink":"Fix and modernize Asana integration."}},{"before":"5542dc3b592dda6ca1a79dff400ea5d3e97e1587","after":"dba01f0cdff2365691dd07d3f3b77aded2126a84","ref":"refs/heads/master","pushedAt":"2024-06-06T09:53:47.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"chipx86","name":"Christian Hammond","path":"/chipx86","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4063?s=80&v=4"},"commit":{"message":"Merge branch 'release-4.x'","shortMessageHtmlLink":"Merge branch 'release-4.x'"}},{"before":"935d159e33a8d4384eec225d552cb6c481cccee4","after":"5542dc3b592dda6ca1a79dff400ea5d3e97e1587","ref":"refs/heads/master","pushedAt":"2024-06-06T09:53:44.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"chipx86","name":"Christian Hammond","path":"/chipx86","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4063?s=80&v=4"},"commit":{"message":"Merge branch 'release-4.x'","shortMessageHtmlLink":"Merge branch 'release-4.x'"}},{"before":"c5303d5c5ffab0a9cd9dd227d8b9b0eee29ea53a","after":"9dba504a945c892568fdd0068cd4355e040cc27c","ref":"refs/heads/release-4.x","pushedAt":"2024-06-06T09:53:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"chipx86","name":"Christian Hammond","path":"/chipx86","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4063?s=80&v=4"},"commit":{"message":"Bump to 4.0.1 dev.","shortMessageHtmlLink":"Bump to 4.0.1 dev."}},{"before":"9710c85e0048d27531255d1708295f0495400515","after":"c5303d5c5ffab0a9cd9dd227d8b9b0eee29ea53a","ref":"refs/heads/release-4.x","pushedAt":"2024-06-06T09:27:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"chipx86","name":"Christian Hammond","path":"/chipx86","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4063?s=80&v=4"},"commit":{"message":"Release rbintegrations 4.0.","shortMessageHtmlLink":"Release rbintegrations 4.0."}},{"before":"5c0e86bd6d1b48fefcb8d3aa79b8d2874052ad6c","after":"9710c85e0048d27531255d1708295f0495400515","ref":"refs/heads/release-4.x","pushedAt":"2024-06-06T03:14:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"chipx86","name":"Christian Hammond","path":"/chipx86","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4063?s=80&v=4"},"commit":{"message":"Update package-lock.json for the latest NPM dependencies.\n\nThis is a trivial change that updates our locked NPM dependencies for\nthe Review Board 7 / rbintegrations 4 release.","shortMessageHtmlLink":"Update package-lock.json for the latest NPM dependencies."}},{"before":"66622a1ed350e3c6dbaa6f3e5babc692496aad43","after":"5c0e86bd6d1b48fefcb8d3aa79b8d2874052ad6c","ref":"refs/heads/release-4.x","pushedAt":"2024-06-05T23:00:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"davidt","name":"David Trowbridge","path":"/davidt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2240?s=80&v=4"},"commit":{"message":"Fix links in chat notifications for review replies.\n\nChat notifications were blindly calling `review.get_absolute_url()` to\nget the URL to link to for the notification. Unfortunately, for\nreview replies, this doesn't work because we don't put an anchor for\nthose into the page.\n\nThis change fixes it so if we have a comment (which we use for the\nnotification text), we open directly to that comment, and if we don't,\nwe link to the parent review.\n\nTesting Done:\n- Ran unit tests.\n- Verified that generated links worked correctly.\n\nReviewed at https://reviews.reviewboard.org/r/13943/","shortMessageHtmlLink":"Fix links in chat notifications for review replies."}},{"before":"e0c4e5a73f0c5608db2e219e7518ab35fc2c6824","after":"66622a1ed350e3c6dbaa6f3e5babc692496aad43","ref":"refs/heads/release-4.x","pushedAt":"2024-06-05T22:24:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"michelle-aubin","name":"Michelle Aubin","path":"/michelle-aubin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/46432749?s=80&v=4"},"commit":{"message":"Fix wording about builds and config files in Jenkins CI's config page.\n\nIn the \"How To Build\" section of the Jenkins CI config page, we had a copy\npaste typo saying that the configuration listed here will replace the contents\nof the GitHub repository's `travis.yml` file. It seems that Jenkins doesn't\nactually use configuration files in a repository, things just get configured\nin GitHub settings and Jenkins settings. So this change updates the wording\nfor that.\n\nTesting Done:\nRan my devserver and looked at the Jenkins CI config page.\n\nAlso checked for this typo in Circle CI's config page.\n\nReviewed at https://reviews.reviewboard.org/r/13945/","shortMessageHtmlLink":"Fix wording about builds and config files in Jenkins CI's config page."}},{"before":"0b51d46d86c1774dcd4a5e0700f6c1100fb1a1d9","after":"935d159e33a8d4384eec225d552cb6c481cccee4","ref":"refs/heads/master","pushedAt":"2024-06-05T04:51:30.000Z","pushType":"push","commitsCount":15,"pusher":{"login":"davidt","name":"David Trowbridge","path":"/davidt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2240?s=80&v=4"},"commit":{"message":"Merge branch 'release-4.x'","shortMessageHtmlLink":"Merge branch 'release-4.x'"}},{"before":"287750e2cbfc1a6638474881cff2ac0ab60ebca6","after":"e0c4e5a73f0c5608db2e219e7518ab35fc2c6824","ref":"refs/heads/release-4.x","pushedAt":"2024-06-05T04:46:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"davidt","name":"David Trowbridge","path":"/davidt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2240?s=80&v=4"},"commit":{"message":"Add release notes for rbintegrations 4.0\n\nThis change adds release notes for our new rbintegrations release,\nincluding the not-yet-landed MS Teams support.\n\nTesting Done:\nBuilt HTML and checked the results.\n\nReviewed at https://reviews.reviewboard.org/r/13800/","shortMessageHtmlLink":"Add release notes for rbintegrations 4.0"}},{"before":"0c2c74a7f11d83a595e9e0321404e40e1b9a63e9","after":"287750e2cbfc1a6638474881cff2ac0ab60ebca6","ref":"refs/heads/release-4.x","pushedAt":"2024-06-04T04:09:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"chipx86","name":"Christian Hammond","path":"/chipx86","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4063?s=80&v=4"},"commit":{"message":"Add new icons for MS Teams and Discord, and improve asset building.\n\nWe've updated the icons for both MS Teams and Discord in our CDN to\nbetter fit into the rounded avatars in the messages. This change updates\nthe assets timestamp to force use of the new images and to specify the\npath for the new MS Teams assets.\n\nIn order to properly leverage the assets timestamp and base URL for the\nlogo and trophies without having to overwrite all the attributes, we now\ndefine `logo_url` and `trophy_urls` as cached properties instead of\nattributes. This allows them to be computed dynamically based on any\noverridden asset timestamp/base URLs defined by subclasses.\n\nTesting Done:\nTested the new download assets and generated URLs.\n\nThis will require some testing in production.\n\nReviewed at https://reviews.reviewboard.org/r/13914/","shortMessageHtmlLink":"Add new icons for MS Teams and Discord, and improve asset building."}},{"before":"d2ed5e1cc12edfcef5bb86c1e1b6701bdc285463","after":"0c2c74a7f11d83a595e9e0321404e40e1b9a63e9","ref":"refs/heads/release-4.x","pushedAt":"2024-05-29T08:05:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"chipx86","name":"Christian Hammond","path":"/chipx86","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4063?s=80&v=4"},"commit":{"message":"Add Jenkins template variables for slash normalization handling.\n\nOur Jenkins implementation normalizes slashes in job names to\nunderscores, in order to avoid issues with certain versions of Jenkins.\nIt turns out that this really only applied to a specific range of\nversions, and that both prior and latter versions need to retain the\nslash. This behavior has been a blocker on supporting newer versions of\nJenkins.\n\nRather than try to determine what's best for the install, we now give\nusers more control over the process by way of new variable names.\n\nThe old `{branch}` and `{repository}` names (which normalized slashes in\nsome versions and didn't in others) are now deprecated and no longer\ndocumented in the field's help text.\n\nInstead, we now have `{branch_name}` and `{repository_name}`, which do\nnot normalize, and `{noslash_branch_name}` and\n`{noslash_repository_name}`, which do normalize.\n\nExisting configurations will continue to work as before, for the most\npart. While the legacy variable names are still there, we no longer\nnormalize the entire job name, so if a job name had slashes explicitly\nprovided and expected them to be changed to underscores, they'll need to\nupdate those to use underscores instead.\n\nBecause of the change to normalization rules across the provided job\nname, this is considered a potentially breaking change, for those that\nneeded slashes normalized before, and will need to be documented as\nsuch.\n\nTesting Done:\nUnit tests pass.\n\nReviewed at https://reviews.reviewboard.org/r/13861/","shortMessageHtmlLink":"Add Jenkins template variables for slash normalization handling."}},{"before":"e835b8c7b775505be8daaa1a3a23aa9918522064","after":"d2ed5e1cc12edfcef5bb86c1e1b6701bdc285463","ref":"refs/heads/release-4.x","pushedAt":"2024-05-22T23:54:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"michelle-aubin","name":"Michelle Aubin","path":"/michelle-aubin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/46432749?s=80&v=4"},"commit":{"message":"Make Markdown escaping in MS Teams integration messages nicer on the MS Teams mobile app.\n\nWe use Markdown links in our MS Teams integration messages, for example we\ndisplay the summary line of a review request and make it link to the review\nrequest page. Since the text for some links are user supplied, we want to\nescape Markdown characters in the text so that they don't break the link.\n\nOriginally we had used Djblets' `markdown_escape` function to escape all\nMarkdown characters, but this turned out to look bad on the MS Teams mobile\napp. The app has a [bug](https://github.com/MicrosoftDocs/msteams-docs/issues/5793) where they don't properly display escaped Markdown\ncharacters. The backslashes that are used for escaping are just plainly show.\nLuckily, brackets are the only characters that are properly escaped in the\napp, and these are really the only ones that would break the Markdown link.\nSo now we only escape the brackets.\n\nTesting Done:\n- Tested sending messages where the summary contained characters\n that would break the Markdown link. Saw the messages appear correctly\n with working links in the mobile and desktop apps.\n- Ran unit tests.\n\nReviewed at https://reviews.reviewboard.org/r/13892/","shortMessageHtmlLink":"Make Markdown escaping in MS Teams integration messages nicer on the …"}},{"before":"276a8df3d2e0670317bff62264fa3048c859303f","after":"e835b8c7b775505be8daaa1a3a23aa9918522064","ref":"refs/heads/release-4.x","pushedAt":"2024-05-21T04:28:11.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"chipx86","name":"Christian Hammond","path":"/chipx86","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4063?s=80&v=4"},"commit":{"message":"Truncate long field values in messages going to Discord.\n\nDiscord's Slack-compatible WebHook endpoint has a limitation that Slack\ndoes not. If a field value is over 1024 characters, Discord will refuse\nto post the message, responding with a very unhelpful error payload.\n\nThrough some trial and error, it appears that they limit the length of\nany field value to 1024 characters.\n\n`BaseChatIntegration` will now pass any field value text through\n`format_field_text()`, which is normally a no-op. In the case of\nDiscord, the text is truncated and ellipsized if over 1024 bytes.\n\nThis should fix posting updates with long descriptions.\n\nTesting Done:\nUnit tests passed.\n\nRan some simulations with known failing review requests, and\nsuccessfully posted them to Discord.\n\nReviewed at https://reviews.reviewboard.org/r/13871/","shortMessageHtmlLink":"Truncate long field values in messages going to Discord."}},{"before":"fb002b0ded7e70c4f0bf6e62cf6474231700cba7","after":"276a8df3d2e0670317bff62264fa3048c859303f","ref":"refs/heads/release-4.x","pushedAt":"2024-05-14T15:38:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"michelle-aubin","name":"Michelle Aubin","path":"/michelle-aubin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/46432749?s=80&v=4"},"commit":{"message":"Update chat integrations to account for new download URLs when showing file attachment images in messages.\n\nWe recently updated our file attachments to have a dedicated, stable URL for\ndownloads instead of pointing directly to the raw file URL. However, this means\nthat URL (`FileAttachment.get_absolute_url()`) no longer includes the file\nextension in it.\n\nWhen deciding whether to include an image of a file attachment in a message,\nour chat integrations would check for file extensions in the file attachment\nURLs included in a change description. Since we no longer include file\nextensions in these URLs, this updates our chat integrations to grab the\nfile extensions from the filename.\n\nI audited the rest of the RB Integrations, Review Board, RBTools, and\nReview Bot codebases to see if we make this same assumption anywhere else,\nand didn't find anything.\n\nTesting Done:\n- Ran unit tests with RB6 and RB7.\n- Manually tested causing chat notifications for review requests\n with an image file attachment (causing an image to appear).\n- Manually tested causing chat notifications for review requests\n with a text file attachment or no file attachments (causing\n no images to appear)\n\nReviewed at https://reviews.reviewboard.org/r/13807/","shortMessageHtmlLink":"Update chat integrations to account for new download URLs when showin…"}},{"before":"28a56e40bfd86672e40ef3cf6094bcc5d2fbb587","after":"fb002b0ded7e70c4f0bf6e62cf6474231700cba7","ref":"refs/heads/release-4.x","pushedAt":"2024-05-14T15:37:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"michelle-aubin","name":"Michelle Aubin","path":"/michelle-aubin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/46432749?s=80&v=4"},"commit":{"message":"Add an integration for Microsoft Teams.\n\nThis adds an integration for Microsoft Teams. Similar to our other chat\nservice integrations, this sends messages to channels in Microsoft Teams when\nreview requests are created, updated, and reviewed.\n\nWe use Microsoft's [Adaptive Card](https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/connectors-using?tabs=cURL#send-adaptive-cards-using-an-incoming-webhook) format for the messages. Unlike our other chat\nintegrations, with MS Teams there's unfortunately no ability to add an accent\ncolour to the message (typically we use yellow, green, and red accents as\na visual indicator for the tone of a message). The styling of the messages\nalso differ between the MS teams desktop and mobile apps, but this is a\nchoice by Microsoft and out of our control.\n\nBased on work by Hailan Xu (/r/11227/).\n\nTesting Done:\nRan unit tests.\n\nManually tested on RB5, RB6 and RB7:\n- Creating the integration.\n- New review requests, with/without diffs and files.\n- Updates to review requests.\n- Reviews with/without comments, issues, ship its.\n- Replies.\n- Tested that text which contains Markdown characters\n gets properly escaped when being formatted in a link\n in a message.\n- Tested that URLs which contain ( or ) gets properly\n escaped when being formatted in a link in a message.\n\nReviewed at https://reviews.reviewboard.org/r/13742/","shortMessageHtmlLink":"Add an integration for Microsoft Teams."}},{"before":"223a5267e5d72fbe56f2f9e25bf73fb3fc4a8574","after":"28a56e40bfd86672e40ef3cf6094bcc5d2fbb587","ref":"refs/heads/release-4.x","pushedAt":"2024-05-09T15:14:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"michelle-aubin","name":"Michelle Aubin","path":"/michelle-aubin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/46432749?s=80&v=4"},"commit":{"message":" Add typing/modernizations to BaseChatIntegration and allow using emoji unicode blocks in chats.\n\nThis change mainly adds typing and modernizations to our chat integration\nclass. Additionally, we deprecate non-keyword arguments in most of their\nmethods for easier expansion in the future.\n\nWe also give subclasses the option to use unicode blocks to represent\nemojis in chat messages instead of shortcodes. This will be useful for the\nupcoming Microsoft Teams integration, because Microsoft Teams can't interpret\nemoji short codes.\n\nTesting Done:\nRan unit tests.\n\nReviewed at https://reviews.reviewboard.org/r/13749/","shortMessageHtmlLink":" Add typing/modernizations to BaseChatIntegration and allow using emo…"}},{"before":"e6fb838eaf3c0a9ad9c5cfdc4338953411cd2678","after":"223a5267e5d72fbe56f2f9e25bf73fb3fc4a8574","ref":"refs/heads/release-4.x","pushedAt":"2024-04-29T15:29:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"michelle-aubin","name":"Michelle Aubin","path":"/michelle-aubin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/46432749?s=80&v=4"},"commit":{"message":"Add housekeeping to rbintegrations.\n\nThis adds housekeeping to rbintegrations so that we can handle deprecation.\n\nThis also updates our classifiers in `setup.py` to remove Python 3.7 and\nadd 3.12.\n\nTesting Done:\nRan unit tests.\n\nReviewed at https://reviews.reviewboard.org/r/13783/","shortMessageHtmlLink":"Add housekeeping to rbintegrations."}},{"before":"f5dedd26dbe0ef33a4aa5d6b264fa6ac4d01908c","after":"e6fb838eaf3c0a9ad9c5cfdc4338953411cd2678","ref":"refs/heads/release-4.x","pushedAt":"2024-04-20T00:39:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"davidt","name":"David Trowbridge","path":"/davidt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2240?s=80&v=4"},"commit":{"message":"Add JS infrastructure for building rbintegrations.\n\nThis adds the new JS build infrastructure to let us take advantage of\nrollup and TypeScript when building the extension static media.\n\nTesting Done:\nRan `setup.py build_static_files`\n\nReviewed at https://reviews.reviewboard.org/r/13761/","shortMessageHtmlLink":"Add JS infrastructure for building rbintegrations."}},{"before":"fc780ac90cf30f387613f6589e6a3f4b5ad33958","after":"0b51d46d86c1774dcd4a5e0700f6c1100fb1a1d9","ref":"refs/heads/master","pushedAt":"2024-04-19T18:35:25.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"davidt","name":"David Trowbridge","path":"/davidt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2240?s=80&v=4"},"commit":{"message":"Set BRANCH back to master","shortMessageHtmlLink":"Set BRANCH back to master"}},{"before":"d176fea34f7ca391b4990b0ca4a445bc545d7a00","after":"f5dedd26dbe0ef33a4aa5d6b264fa6ac4d01908c","ref":"refs/heads/release-4.x","pushedAt":"2024-04-19T18:34:12.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"davidt","name":"David Trowbridge","path":"/davidt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2240?s=80&v=4"},"commit":{"message":"Bump version to 4.0 for new branch.","shortMessageHtmlLink":"Bump version to 4.0 for new branch."}},{"before":null,"after":"d176fea34f7ca391b4990b0ca4a445bc545d7a00","ref":"refs/heads/release-4.x","pushedAt":"2024-04-19T18:33:40.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"davidt","name":"David Trowbridge","path":"/davidt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2240?s=80&v=4"},"commit":{"message":"Add JS infrastructure for building rbintegrations.\n\nThis adds the new JS build infrastructure to let us take advantage of\nrollup and TypeScript when building the extension static media.\n\nTesting Done:\nRan `setup.py build_static_files`","shortMessageHtmlLink":"Add JS infrastructure for building rbintegrations."}},{"before":"83b59919c23d9724cc0165a5c4a7bb76876fa977","after":"fc780ac90cf30f387613f6589e6a3f4b5ad33958","ref":"refs/heads/master","pushedAt":"2024-03-18T20:19:06.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"davidt","name":"David Trowbridge","path":"/davidt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2240?s=80&v=4"},"commit":{"message":"Delete obsolete empty review tests.\n\nWe had several test cases for notifications to handle the case of empty\nreviews. We now have validation on the publish side that prevents\npublishing these at all, so these tests were failing. Remove them.\n\nTesting Done:\nRan unit tests.\n\nReviewed at https://reviews.reviewboard.org/r/13634/","shortMessageHtmlLink":"Delete obsolete empty review tests."}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEq8IZnAA","startCursor":null,"endCursor":null}},"title":"Activity · reviewboard/rbintegrations"}