{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":5274894,"defaultBranch":"master","name":"electrum","ownerLogin":"spesmilo","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2012-08-02T16:24:30.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/2084673?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1717924746.0","currentOid":""},"activityList":{"items":[{"before":"300b986782c754be462788a30e0355301683c0ed","after":"20d22d26b360ddeebd07c94f7e71de227bf79825","ref":"refs/heads/master","pushedAt":"2024-06-10T20:27:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"trustedcoin: rm dead code","shortMessageHtmlLink":"trustedcoin: rm dead code"}},{"before":"f8180c898c1d7e898f7fdc65d74a576e1a2820b2","after":"300b986782c754be462788a30e0355301683c0ed","ref":"refs/heads/master","pushedAt":"2024-06-10T20:22:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"soothe flake8\n\n```\n./tests/test_mnemonic.py:249:9: B017 `assertRaises(Exception)` and `pytest.raises(Exception)` should be considered evil. They can lead to your test passing even if the code being tested is never executed due to a typo. Assert for a more specific exception (builtin or custom), or use `assertRaisesRegex` (if using `assertRaises`), or add the `match` keyword argument (if using `pytest.raises`), or use the context manager form with a target.\n with self.assertRaises(Exception):\n ^\n1 B017 `assertRaises(Exception)` and `pytest.raises(Exception)` should be considered evil. They can lead to your test passing even if the code being tested is never executed due to a typo. Assert for a more specific exception (builtin or custom), or use `assertRaisesRegex` (if using `assertRaises`), or add the `match` keyword argument (if using `pytest.raises`), or use the context manager form with a target.\n```","shortMessageHtmlLink":"soothe flake8"}},{"before":"a2d5e3183867e2ee9803c80f17c8a792a8531865","after":"f8180c898c1d7e898f7fdc65d74a576e1a2820b2","ref":"refs/heads/master","pushedAt":"2024-06-10T20:14:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"mnemonic: make_seed: add sanity-check\n\nWhen going through the wizard, this case would previously have errored later in the flow. (for '2fa' at least)","shortMessageHtmlLink":"mnemonic: make_seed: add sanity-check"}},{"before":"b95fbbb86f2b7e6575e64ffdf7fdd9766387d403","after":"a2d5e3183867e2ee9803c80f17c8a792a8531865","ref":"refs/heads/master","pushedAt":"2024-06-10T20:01:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"mnemonic: rename seed_type() fn\n\nSome functions have an argument named \"seed_type\" in which it was annoying to call the seed_type() fn.\n(especially for functions inside the same module)","shortMessageHtmlLink":"mnemonic: rename seed_type() fn"}},{"before":"4f7dcc98bdb50a9cd74db18e2d96496ac40e17a7","after":"b95fbbb86f2b7e6575e64ffdf7fdd9766387d403","ref":"refs/heads/master","pushedAt":"2024-06-10T19:36:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"wizard: fix regression: allow passphrase for some '2fa' seeds\n\nfixes https://github.com/spesmilo/electrum/issues/9088","shortMessageHtmlLink":"wizard: fix regression: allow passphrase for some '2fa' seeds"}},{"before":"784f209d02437f3d400b7652679146f8d79d620a","after":"4f7dcc98bdb50a9cd74db18e2d96496ac40e17a7","ref":"refs/heads/master","pushedAt":"2024-06-10T18:23:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"tests: wallet_vertical: re pre-2.7 \"2fa\" seeds, test both 24 and 25 len","shortMessageHtmlLink":"tests: wallet_vertical: re pre-2.7 \"2fa\" seeds, test both 24 and 25 len"}},{"before":"d1aa65d0b7d43a2e8776e764d12c2f3157445bf1","after":"784f209d02437f3d400b7652679146f8d79d620a","ref":"refs/heads/master","pushedAt":"2024-06-10T15:28:27.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"accumulator","name":null,"path":"/accumulator","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/341818?s=80&v=4"},"commit":{"message":"Merge pull request #9091 from accumulator/channel_backup_import_nolightning\n\nqml: fix handling of channel backup import on lightning-disabled wallets","shortMessageHtmlLink":"Merge pull request #9091 from accumulator/channel_backup_import_nolig…"}},{"before":"912e1a3a5be3d8f3d6b97ae89bb0f073afdb9323","after":"d1aa65d0b7d43a2e8776e764d12c2f3157445bf1","ref":"refs/heads/master","pushedAt":"2024-06-10T13:21:42.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"accumulator","name":null,"path":"/accumulator","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/341818?s=80&v=4"},"commit":{"message":"Merge pull request #9086 from longxiangqiao/master\n\nchore: fix some comments","shortMessageHtmlLink":"Merge pull request #9086 from longxiangqiao/master"}},{"before":null,"after":"b00a11d8eaf8a1a1a590d0ebbf9a581439bacc77","ref":"refs/heads/anchor_commitments_2024","pushedAt":"2024-06-09T09:19:06.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ecdsa","name":"ThomasV","path":"/ecdsa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2343238?s=80&v=4"},"commit":{"message":"watchtower: only send first-stage HTLC justice txs\n\nDue to malleability of HTLC-transactions, we can't send presigned\njustice transactions for the second-stage HTLC transactions, which is\nwhy we now send first-stage justice transactions for anchor channels.","shortMessageHtmlLink":"watchtower: only send first-stage HTLC justice txs"}},{"before":"1705e47a88d60064bb7e7f541e8cd03bb9de3358","after":"912e1a3a5be3d8f3d6b97ae89bb0f073afdb9323","ref":"refs/heads/master","pushedAt":"2024-06-08T09:20:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ecdsa","name":"ThomasV","path":"/ecdsa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2343238?s=80&v=4"},"commit":{"message":"reintroduce 'unlock' command\n\n- the unlock command was replaced by an option to load_wallet,\nbecause some applications (the swapserver plugin) need to be\nexecuted with an unlocked password. Now the swapserver plugin\nwaits until the wallet is unlocked.\n- wallet.unlock now checks password unconditionally, see #8799","shortMessageHtmlLink":"reintroduce 'unlock' command"}},{"before":"02a9ab80be819468352f773bd7120421868d38f0","after":"1705e47a88d60064bb7e7f541e8cd03bb9de3358","ref":"refs/heads/master","pushedAt":"2024-06-07T16:26:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"commands: add comment to load_wallet re \"unlock\" quirk","shortMessageHtmlLink":"commands: add comment to load_wallet re \"unlock\" quirk"}},{"before":"e83a98116f6471018704c81f6e259517d40ed88b","after":"04de26628630d730725b9b7ef508aef21e4c31b6","ref":"refs/heads/persist_mpp_status","pushedAt":"2024-06-07T15:36:58.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ecdsa","name":"ThomasV","path":"/ecdsa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2343238?s=80&v=4"},"commit":{"message":"Persist MPP resolution status in wallet file.\n\nIf we accept a MPP and we forward the payment (trampoline or swap),\nwe need to persist the payment accepted status, or we might wrongly\nrelease htlcs on the next restart.\n\nlnworker.received_mpp_htlcs used to be cleaned up in maybe_cleanup_forwarding,\nwhich only applies to forwarded payments. However, since we now\npersist this dict, we need to clean it up also in the case of\npayments received by us. This part of maybe_cleanup_forwarding has\nbeen migrated to lnworker.maybe_cleanup_mpp","shortMessageHtmlLink":"Persist MPP resolution status in wallet file."}},{"before":"2245e4dbe05df6d295ed4a4e0ee01fa3b70cfd5b","after":"e83a98116f6471018704c81f6e259517d40ed88b","ref":"refs/heads/persist_mpp_status","pushedAt":"2024-06-07T15:35:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ecdsa","name":"ThomasV","path":"/ecdsa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2343238?s=80&v=4"},"commit":{"message":"Persist MPP resolution status in wallet file.\n\nIf we accept a MPP and we forward the payment (trampoline or swap),\nwe need to persist the payment accepted status, or we might wrongly\nrelease htlcs on the next restart.\n\nlnworker.received_mpp_htlcs used to be cleaned up in maybe_cleanup_forwarding,\nwhich only applies to forwarded payments. However, since we now\npersist this dict, we need to clean it up also in the case of\npayments received by us. This part of maybe_cleanup_forwarding has\nbeen migrated to lnworker.maybe_cleanup_mpp","shortMessageHtmlLink":"Persist MPP resolution status in wallet file."}},{"before":"7a0bffc3e36a450abff7835a15340fb7ed2b8c7e","after":"02a9ab80be819468352f773bd7120421868d38f0","ref":"refs/heads/master","pushedAt":"2024-06-07T14:56:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"interface: nicer error for CA-signed \"Hostname mismatch\" certs\n\nPreviously when encountering a CA-signed cert that failed verification with \"Hostname mismatch\",\nwe would\n1. erroneously mark it as self-signed\n2. save its cert to pin it\n3. when connecting to it later, and being served a CA-signed cert, we would reject the connection\n - I think this is because we use the saved cert (the peer cert, just the last cert in the chain) as if it was a root CA,\n and then during the connection we try to verify against that root. This fails as we are served a different root then.\nError logged in step(3):\n```\n 3.85 | W | i/interface.[wirg2tsto7rme7n26lkd3ivbvxmjyy2pktlozwjuep22jcsfsghfqbqd.onion:50002] | Cannot connect to main server due to SSL error (maybe cert changed compared to \"/home/user/.electrum/testnet/certs/wirg2tsto7rme7n26lkd3ivbvxmjyy2pktlozwjuep22jcsfsghfqbqd.onion\"). Exc: ConnectError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)'))\n```\n\nThis commit fixes step(1), we won't mark the cert as self-signed, instead the error is propagated out and the connection closed.\n```\n 35.05 | I | i/interface.[wirg2tsto7rme7n26lkd3ivbvxmjyy2pktlozwjuep22jcsfsghfqbqd.onion:50002] | disconnecting due to: ErrorGettingSSLCertFromServer(ConnectError(SSLCertVerificationError(1, \"[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'wirg2tsto7rme7n26lkd3ivbvxmjyy2pktlozwjuep22jcsfsghfqbqd.onion'. (_ssl.c:1007)\")))\n```\n\nCompare:\n- SSLCertVerificationError(1, \"[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'wirg2tsto7rme7n26lkd3ivbvxmjyy2pktlozwjuep22jcsfsghfqbqd.onion'. (_ssl.c:1007)\")\n - verify_code=62\n- SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1007)')\n - verify_code=18\n\nNote: the verify_code constants look stable, though they might be openssl-specific. I guess that's ok(?)\nhttps://github.com/openssl/openssl/blob/140540189c67ba94188165b1144fdfb5b248bc02/include/openssl/x509_vfy.h.in#L224","shortMessageHtmlLink":"interface: nicer error for CA-signed \"Hostname mismatch\" certs"}},{"before":null,"after":"2245e4dbe05df6d295ed4a4e0ee01fa3b70cfd5b","ref":"refs/heads/persist_mpp_status","pushedAt":"2024-06-07T12:22:19.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ecdsa","name":"ThomasV","path":"/ecdsa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2343238?s=80&v=4"},"commit":{"message":"Persist MPP resolution status in wallet file.\n\nIf we accept a MPP and we forward the payment (trampoline or swap),\nwe need to persist the payment accepted status, or we might wrongly\nrelease htlcs on the next restart.\n\nlnworker.received_mpp_htlcs used to be cleaned up in maybe_cleanup_forwarding,\nwhich only applies to forwarded payments. However, since we now\npersist this dict, we need to clean it up also in the case of\npayments received by us. This part of maybe_cleanup_forwarding has\nbeen migrated to lnworker.maybe_cleanup_mpp","shortMessageHtmlLink":"Persist MPP resolution status in wallet file."}},{"before":"6b0236445796062343fb8f0b2ad66a97a8c9debb","after":"7a0bffc3e36a450abff7835a15340fb7ed2b8c7e","ref":"refs/heads/master","pushedAt":"2024-06-05T19:01:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"swaps: broadcast_transaction error-handling","shortMessageHtmlLink":"swaps: broadcast_transaction error-handling"}},{"before":"13e294908829887d1c71580896cc611f2e9486f1","after":"6b0236445796062343fb8f0b2ad66a97a8c9debb","ref":"refs/heads/master","pushedAt":"2024-06-05T17:39:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ecdsa","name":"ThomasV","path":"/ecdsa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2343238?s=80&v=4"},"commit":{"message":"follow-up 444b3f3e17f5b29248ad88c7c37b1080ea97626c: if we bump the fee of a claim tx, we must broadcast because add_transaction will fail","shortMessageHtmlLink":"follow-up 444b3f3: if we bump the fee of a claim tx, we must broadcas…"}},{"before":"982443eaa3d866a2c9dee912cd4e233782f599d8","after":"13e294908829887d1c71580896cc611f2e9486f1","ref":"refs/heads/master","pushedAt":"2024-06-05T14:55:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"rm some legacy cruft for old python versions","shortMessageHtmlLink":"rm some legacy cruft for old python versions"}},{"before":"0866581b2c1e3b2d580b6cce3c937f27a256f6b7","after":"982443eaa3d866a2c9dee912cd4e233782f599d8","ref":"refs/heads/master","pushedAt":"2024-06-05T14:49:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ecdsa","name":"ThomasV","path":"/ecdsa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2343238?s=80&v=4"},"commit":{"message":"maybe_cleanup_forwarding: fix crash if payment_key not in self.received_mpp_htlcs","shortMessageHtmlLink":"maybe_cleanup_forwarding: fix crash if payment_key not in self.receiv…"}},{"before":"444b3f3e17f5b29248ad88c7c37b1080ea97626c","after":"0866581b2c1e3b2d580b6cce3c937f27a256f6b7","ref":"refs/heads/master","pushedAt":"2024-06-05T14:45:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"daemon error-handling: fix traceback.format_exception() on old python\n\nThe new API for traceback.format_exception was only added in python 3.10 (https://github.com/python/cpython/commit/91e93794d5dd1aa91fbe142099c2955e0c4c1660).","shortMessageHtmlLink":"daemon error-handling: fix traceback.format_exception() on old python"}},{"before":"90136f0de5243d58ee5df88a7729fc427ff5cd78","after":"444b3f3e17f5b29248ad88c7c37b1080ea97626c","ref":"refs/heads/master","pushedAt":"2024-06-05T11:50:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ecdsa","name":"ThomasV","path":"/ecdsa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2343238?s=80&v=4"},"commit":{"message":"swapserver: bump fee of refund tx if needed","shortMessageHtmlLink":"swapserver: bump fee of refund tx if needed"}},{"before":"bc579264985f4bfe02617437f2c1793825c6076d","after":"90136f0de5243d58ee5df88a7729fc427ff5cd78","ref":"refs/heads/master","pushedAt":"2024-06-04T18:29:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"(trivial) fix some import orders\n\n1. stdlib\n2. 3rd-party\n3. internal\n\n(as in PEP-8)","shortMessageHtmlLink":"(trivial) fix some import orders"}},{"before":"b88576e6abe095dea3aaab3421767db5d2a48c6c","after":"0ff728d6eae454d691e66c802e41977e9ae3b3a7","ref":"refs/heads/resumable_channels2","pushedAt":"2024-06-04T14:25:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ecdsa","name":"ThomasV","path":"/ecdsa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2343238?s=80&v=4"},"commit":{"message":"peerbackup: do not include announcement_signatures","shortMessageHtmlLink":"peerbackup: do not include announcement_signatures"}},{"before":"fab567db3aae648ea8913de7733e7c3e50e167d7","after":"bc579264985f4bfe02617437f2c1793825c6076d","ref":"refs/heads/master","pushedAt":"2024-06-04T13:48:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"network: (trivial) simplify send_http_on_proxy","shortMessageHtmlLink":"network: (trivial) simplify send_http_on_proxy"}},{"before":"af2c9b081c9dd4f781e9f52d5fa8c397383df342","after":"fab567db3aae648ea8913de7733e7c3e50e167d7","ref":"refs/heads/master","pushedAt":"2024-06-04T13:43:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"lnurl: better error messages\n\nre https://github.com/spesmilo/electrum/issues/9078","shortMessageHtmlLink":"lnurl: better error messages"}},{"before":"d6b6872dd0c8e863429b6268f44d3bf02b00a907","after":"b88576e6abe095dea3aaab3421767db5d2a48c6c","ref":"refs/heads/resumable_channels2","pushedAt":"2024-06-04T11:26:47.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ecdsa","name":"ThomasV","path":"/ecdsa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2343238?s=80&v=4"},"commit":{"message":"peerbackups: request htlc history (wip)","shortMessageHtmlLink":"peerbackups: request htlc history (wip)"}},{"before":"56bd2acb20c8d7f7a37d4be2552706b15b4724c6","after":"d6b6872dd0c8e863429b6268f44d3bf02b00a907","ref":"refs/heads/resumable_channels2","pushedAt":"2024-06-04T10:59:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ecdsa","name":"ThomasV","path":"/ecdsa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2343238?s=80&v=4"},"commit":{"message":"request htlc history","shortMessageHtmlLink":"request htlc history"}},{"before":"eb6e50355625f3b7a9fbd9c1c0018d3c5139dd5c","after":"af2c9b081c9dd4f781e9f52d5fa8c397383df342","ref":"refs/heads/master","pushedAt":"2024-06-03T18:36:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"util: add AsyncHangDetector, and use it for lnpeer._process_message","shortMessageHtmlLink":"util: add AsyncHangDetector, and use it for lnpeer._process_message"}},{"before":"0c48fd495f3780b53c6b0315aa2ec553ce0ca8cb","after":"eb6e50355625f3b7a9fbd9c1c0018d3c5139dd5c","ref":"refs/heads/master","pushedAt":"2024-06-03T17:09:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"SomberNight","name":"ghost43","path":"/SomberNight","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/29142493?s=80&v=4"},"commit":{"message":"lnworker: follow-up prev: add some nuance to peer-collision-handling\n\ne.g. existing peer might not have a working socket","shortMessageHtmlLink":"lnworker: follow-up prev: add some nuance to peer-collision-handling"}},{"before":"25e91770df74c2af9804908ed9be84997191fd73","after":"56bd2acb20c8d7f7a37d4be2552706b15b4724c6","ref":"refs/heads/resumable_channels2","pushedAt":"2024-06-03T16:40:23.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ecdsa","name":"ThomasV","path":"/ecdsa","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2343238?s=80&v=4"},"commit":{"message":"lnwire: pick odd tlv numbers, add peerbackup version to INIT","shortMessageHtmlLink":"lnwire: pick odd tlv numbers, add peerbackup version to INIT"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEYYXAWwA","startCursor":null,"endCursor":null}},"title":"Activity · spesmilo/electrum"}