{"push_id":958507020,"size":11,"distinct_size":11,"ref":"refs/heads/master","head":"21126e8dae83349cedeefee5cd11ab3db92d0da6","before":"9e586db4694b8e93445817a1cb89fd344ad84ba6","commits":[{"sha":"fde9977568b73a45d1cceec02993891bee290f5c","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@hornwitser.no","name":"Hornwitser"},"message":"Add vim swap files to .gitignore\n\nIgnore .swp files made by vim when editing files in the repository.","distinct":true,"url":"https://api.github.com/repos/Hornwitser/YetiBridge/commits/fde9977568b73a45d1cceec02993891bee290f5c"},{"sha":"08ee8f05285afa97d34f7c620745df4484f8a88f","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@hornwitser.no","name":"Hornwitser"},"message":"Clean up asserts in BaseBridge\n\nChange the assert statements in BaseBridge to conditionally raising a\nRuntimeError, and move the commonly used variant to a private method.","distinct":true,"url":"https://api.github.com/repos/Hornwitser/YetiBridge/commits/08ee8f05285afa97d34f7c620745df4484f8a88f"},{"sha":"ef43a2dad174297e1e9301cc4ff21816f0a34274","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@hornwitser.no","name":"Hornwitser"},"message":"Add missing on_user_remove hook\n\nThe addition of user and channel tracking (aed98d2) was missing the hook\nfor user removals from channels, resulting in users never leaving\nchannels once they have joined them.  Fix by adding this missing hook.","distinct":true,"url":"https://api.github.com/repos/Hornwitser/YetiBridge/commits/ef43a2dad174297e1e9301cc4ff21816f0a34274"},{"sha":"9b25b66c9daeba753e3f632b393314a7dea9ba38","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@hornwitser.no","name":"Hornwitser"},"message":"Add temporary get_user() method to BaseBridge\n\nAdd helper function BaseBridge.get_user() for getting the user object\ncorresponding to a user with the passed id.  This is a temorary\nworkaround to the problem of there not being any good mapping of user id\nto user object (the current setup has a user object per channel it is\nin).","distinct":true,"url":"https://api.github.com/repos/Hornwitser/YetiBridge/commits/9b25b66c9daeba753e3f632b393314a7dea9ba38"},{"sha":"1d49879c439a253ebd4bb1b35ac9cd64944745c0","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@hornwitser.no","name":"Hornwitser"},"message":"Add utf8wrap module\n\nAdd utility module for doing text wrapping based on UTF-8 encoded byte\nlength.  This is needed for an IRC bridge to properly do text wrapping\nfor messages with lines longer than the IRC limit.","distinct":true,"url":"https://api.github.com/repos/Hornwitser/YetiBridge/commits/1d49879c439a253ebd4bb1b35ac9cd64944745c0"},{"sha":"a4d67ead1e1641b3ed7d613f14bd32205b51d7a5","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@hornwitser.no","name":"Hornwitser"},"message":"Add IRC bridge\n\nImplement an IRC bridge that add an imposter bot for every user that is\nadded to the channel from other bridges.  PM's are properly relayed\nthrough the bridge as expected.\n\nNote that this perverse abuse of users joining the server is likely\ngoing to be stopped by rate limiting and abuse filters.  Special\nsettings in the IRC server may be required for it to operate properly.","distinct":true,"url":"https://api.github.com/repos/Hornwitser/YetiBridge/commits/a4d67ead1e1641b3ed7d613f14bd32205b51d7a5"},{"sha":"1ab02fc24bfcc58c5169d1ec3cde02c20030bf0b","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@hornwitser.no","name":"Hornwitser"},"message":"Add limited Discord bridge\n\nImplement a Discord bridge that does basic relaying of messages to and\nfrom users in channels.  Towards the bridge interface, users are\nproperly represented, but towards Discord all messages are sent through\na single bridge user.  User to user conversations is therefore not\nsupported.","distinct":true,"url":"https://api.github.com/repos/Hornwitser/YetiBridge/commits/1ab02fc24bfcc58c5169d1ec3cde02c20030bf0b"},{"sha":"018d0c5577ca60569952653b6ee07c9018baedc7","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@hornwitser.no","name":"Hornwitser"},"message":"Fix Channel initializer in BaseBridge\n\nThe tracking of channels added to BaseBridge in aed98d2 did not properly\ninterate over the items of the users dictionary passed.  Causing a crash\nwhen joining a channel with users in it.  Fix by adding the missing\n.items() to the for loop.","distinct":true,"url":"https://api.github.com/repos/Hornwitser/YetiBridge/commits/018d0c5577ca60569952653b6ee07c9018baedc7"},{"sha":"d63b35f750416678438c430123bd9f901d73ba10","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@hornwitser.no","name":"Hornwitser"},"message":"Dampen joins and leaves from Discord\n\nOn the mobile app for Discord, it sets the status as offline everytime\nyou leave the app or set the phone in standby.  This causes excessive\njoin and leave messages in chat platforms that show them by default.\nAdd a configurable timeout in which users are kept online from Discord\nafter they have left the server, so that there's no join/leave output\nevery time they check on Discord.\n\nThis is implemented by putting users that leave in a leave queue with a\ntimestamp, and having a separate thread periodically checking for users\nthat have timed out.  To avoid race conditions, a lock is introduced for\nactions that require checking the current list of users.","distinct":true,"url":"https://api.github.com/repos/Hornwitser/YetiBridge/commits/d63b35f750416678438c430123bd9f901d73ba10"},{"sha":"2cae112ab16f277a69447d196a5053a54665e98c","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@hornwitser.no","name":"Hornwitser"},"message":"Change format of actions on Discord\n\nUse a more traditional format of \"* user message\" for actions that are\nrelayed to Discord.","distinct":true,"url":"https://api.github.com/repos/Hornwitser/YetiBridge/commits/2cae112ab16f277a69447d196a5053a54665e98c"},{"sha":"21126e8dae83349cedeefee5cd11ab3db92d0da6","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@hornwitser.no","name":"Hornwitser"},"message":"Translate mentions over the bridge\n\nAdd a translation of mentions in the discord and irc bridges.  When a\ntext string of the format \"@username\" is sent over the bridge, it will\nbe translated to special mention text of the format \"<[@user_id]>\".\n\nDiscord translates @name mentions to a special mention of the form\n\"<@discord_id>\", which pings the mentioned user on his client.  This is\nthen translated by the Discord bridge to the internal format\n\"<[@user_id]>\".  The reverse translation is also done by the Discord\nbridge when it receives a text.  In the case were the mentioned user is\nin the Discord chatroom, it will turn into the special mention syntax\nrecognized by Discord.  Otherwise it will be translated into a plain\n\"@name\" form.\n\nFor IRC, the translation is similar to Discord, excet that there is no\nspecial mention syntax.  Instead \"@nick\" is treated as a mention, and\nwill be converted into the special mention if a corresponding user with\nthe nick is found.  The reverse translation turns the user_id into the\nnickname of the user mentioned, or the nickname of the user bot that was\nmentioned.","distinct":true,"url":"https://api.github.com/repos/Hornwitser/YetiBridge/commits/21126e8dae83349cedeefee5cd11ab3db92d0da6"}]}