{"push_id":2775378013,"size":9,"distinct_size":9,"ref":"refs/heads/master","head":"93904b5a1b5751ec2e9df350d55e6944ae5c50b9","before":"0d869f117771a9e0244928f034560e9a2ec4a81d","commits":[{"sha":"596d6917e77e768167150a4e2d102a1ca221aeea","author":{"name":"fiatjaf","email":"855d3d30d031fa35ce77e94a4635d095439d38b9@gmail.com"},"message":"unconfirm/unsubscribe from forms.\n\n- url_for(request_unconfirm_form) link on emails we send.\n- clicking on that link shows a page that says a confirmation was sent.\n- clicking on the confirmation link unconfirms the form.\n- after unconfirming the form, a list of still confirmed forms for\n  the given email address is shown, so the user can choose if he wants\n  to unsubscribe from other forms.\n\nfor the final unconfirmation url, a <digest> is generated deterministically\nfrom the form id (so form unconfirmation urls are secret, but can be reused).\n\nfor the unconfirm_multiple endpoint (after the first form is already\nunconfirmed we use a flask.session, which lasts only for the given session.)\n\nno recaptcha is employed anywhere.\n\n     submission\n  +-----------+\n  |           |\n  |           |\n  |           |\n  |           |  +\n  |           |  |         +-----------------+\n  +-----------+  |disable  |                 |\n                 +------>  |                 |\n                           |                 |\n                           |    confirmation |\n                           |    sent to your |\n+---------------+          |    email        |\n|               |          |                 |\n|               |       +  +-----------------+\n|   disable form|       |\n|   at x for    | <-----+\n|   address y?  |\n|               |\n|               |        +--------------------+\n+---------------+        |                    |\n                         |                    |\n              +          |  disabled form x   |\n              |          |  for address y     |\n              |          |                    |\n              |          |  do you want to    |\n              |          |  disable these     |\n              |          |  other forms?      |\n              +------>   |                    |\n                         |  a                 |\n                         |                    |\n                         |  b                 |\n                         |                    |\n                         |  c                 |\n                         |                    |\n                         |  all               |\n                         |                    |\n                         +--------------------+","distinct":true,"url":"https://api.github.com/repos/formspree/formspree/commits/596d6917e77e768167150a4e2d102a1ca221aeea"},{"sha":"2a552f91587be809c852de6658e04f6650bbc429","author":{"name":"fiatjaf","email":"855d3d30d031fa35ce77e94a4635d095439d38b9@gmail.com"},"message":"unconfirm flow tests.","distinct":true,"url":"https://api.github.com/repos/formspree/formspree/commits/2a552f91587be809c852de6658e04f6650bbc429"},{"sha":"14f02953f70a66d01041980c54ca291a16ba2be5","author":{"name":"Rohit Datta","email":"d54d8f8b55e12b08afd7c3088bddeda68e8c1887@gmail.com"},"message":"progress on inlining on startup","distinct":true,"url":"https://api.github.com/repos/formspree/formspree/commits/14f02953f70a66d01041980c54ca291a16ba2be5"},{"sha":"c74e5ab7c0a91a720ad3cee39fa79d0302a8a54f","author":{"name":"Rohit Datta","email":"d54d8f8b55e12b08afd7c3088bddeda68e8c1887@gmail.com"},"message":"templating referencing with a shadowing bug","distinct":true,"url":"https://api.github.com/repos/formspree/formspree/commits/c74e5ab7c0a91a720ad3cee39fa79d0302a8a54f"},{"sha":"a0269a854f7b0371907af3a8b86bd32bc0401c90","author":{"name":"Rohit Datta","email":"d54d8f8b55e12b08afd7c3088bddeda68e8c1887@gmail.com"},"message":"fixed shadowing bug, can now send emails generated pre inline","distinct":true,"url":"https://api.github.com/repos/formspree/formspree/commits/a0269a854f7b0371907af3a8b86bd32bc0401c90"},{"sha":"308d252cf8dbb9878ba31dc07b764d088ef452a2","author":{"name":"Rohit Datta","email":"d54d8f8b55e12b08afd7c3088bddeda68e8c1887@gmail.com"},"message":"fix the href replacing in jinja","distinct":true,"url":"https://api.github.com/repos/formspree/formspree/commits/308d252cf8dbb9878ba31dc07b764d088ef452a2"},{"sha":"a984d214c68edee1b053dcb9c62f7f15aaa9ed02","author":{"name":"fiatjaf","email":"855d3d30d031fa35ce77e94a4635d095439d38b9@gmail.com"},"message":"fix checkbox js when there's only 1 form left to be unconfirmed.","distinct":true,"url":"https://api.github.com/repos/formspree/formspree/commits/a984d214c68edee1b053dcb9c62f7f15aaa9ed02"},{"sha":"6ff02e21ec9b92c8fc6f090245f234a8c06bcf8b","author":{"name":"fiatjaf","email":"855d3d30d031fa35ce77e94a4635d095439d38b9@gmail.com"},"message":"copy suggestions from @colevscode.","distinct":true,"url":"https://api.github.com/repos/formspree/formspree/commits/6ff02e21ec9b92c8fc6f090245f234a8c06bcf8b"},{"sha":"93904b5a1b5751ec2e9df350d55e6944ae5c50b9","author":{"name":"Giovanni T. Parra","email":"855d3d30d031fa35ce77e94a4635d095439d38b9@gmail.com"},"message":"Merge pull request #188 from fiatjaf/unconfirm-forms-2\n\nunconfirm/unsubscribe from forms.","distinct":true,"url":"https://api.github.com/repos/formspree/formspree/commits/93904b5a1b5751ec2e9df350d55e6944ae5c50b9"}]}
{"actor":{"display_login":"fiatjaf"}}