{"push_id":2615564836,"size":64,"distinct_size":4,"ref":"refs/heads/master","head":"d8702f82ac7bdde2241d01747da1044ec9054d97","before":"4a0f762d0f8db60cabb4abe9d985bc1930a01003","commits":[{"sha":"f8a4bb95ee6e1770c0cf3a23b8f3e4dfd30c67ac","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Update find_all methods in models to return [] instead of nil","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/f8a4bb95ee6e1770c0cf3a23b8f3e4dfd30c67ac"},{"sha":"40382f5dabcf1e85f610913b2695121b5207e9fe","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Create enableTooltips method in AppHelpers","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/40382f5dabcf1e85f610913b2695121b5207e9fe"},{"sha":"3b0a07f507c89282b12bf17cbc709769d351b6d7","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Create Payment, PromoCode, Subscription and SubscriptionPlan models","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/3b0a07f507c89282b12bf17cbc709769d351b6d7"},{"sha":"8012fad04b4f5950c569857dcf04db0c5e9648c8","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Break athletes/styles/main.scss into partials","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/8012fad04b4f5950c569857dcf04db0c5e9648c8"},{"sha":"f5168b3430bd36cad3865480f7e5d5daab096e16","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Tidy up environment variables for toggling ON/OFF features\n\n- Add 'HIDE_FACEBOOK_LIKE'\n- Add 'HIDE_SOCIAL_SHARING'\n- Remove 'DISABLE_BEST_EFFORTS'","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/f5168b3430bd36cad3865480f7e5d5daab096e16"},{"sha":"e80833b61d74ec217f537b7b1e61fd93d85e9562","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Update loading icon panel markup and keep them all consistent","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/e80833b61d74ec217f537b7b1e61fd93d85e9562"},{"sha":"d826f2cc366a14bc2a18bfa363661e069e59455b","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Add subscription badge to navigation sidebar, settings and header","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/d826f2cc366a14bc2a18bfa363661e069e59455b"},{"sha":"f79f5a69092b01dac465aed1c76a0940567fd244","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Create Rake tasks to apply PRO plans and automatically apply 'Early Birds PRO' on login","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/f79f5a69092b01dac465aed1c76a0940567fd244"},{"sha":"455a1b381238ef5ef0c00b9cdec42d3a870e9d5f","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Create 'Upgrade' view page and add a link into settings for free accounts","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/455a1b381238ef5ef0c00b9cdec42d3a870e9d5f"},{"sha":"cf36674a2eb7fbe5b4a523f75f8ebd425dbc2878","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Update gem and npm dependencies","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/cf36674a2eb7fbe5b4a523f75f8ebd425dbc2878"},{"sha":"572879f611fa0c758cd158e8c0a690adb9781aa6","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Fix 1/2 mile URL problem","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/572879f611fa0c758cd158e8c0a690adb9781aa6"},{"sha":"ed2b31c3c102dba87941175897cdc8eaa28c2293","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Return 403 Forbidden from controllers when accessing PRO features by free accounts and handle properly in front-end\n\n- Update all controllers to return the correct statues instead of throwing exceptions\n- Create a 404 view when distance or year is not valid\n- Fix Toastr not showing up problem by referencing the correct CSS file\n- Show controller errors in Toastr popups\n- Fix wrong 1/2 mile URL in the sidebar\n- Update all spec tests","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/ed2b31c3c102dba87941175897cdc8eaa28c2293"},{"sha":"f433f2c64d07d3445583ec06860a1b6d90f0e0ae","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Send PRO expiration date to MailChimp and fix SubscriptionCreator logic\n\n- Send PRO expiration date to MailChimp, use 2999/12/31 if on Lifetime PRO, 1970/01/01 if not on PRO subscription\n- Fix SubscriptionCreator logic to add new record without expiring old ones and throw error if already on Lifetime PRO (i.e. nil expires_at in one entry)\n- Only automatically apply Early Birds PRO on login once (ignore if already on PRO)\n- Add .pro_subscription? and .pro_subscription_expires_at decorator spec tests\n- Use 'Indefinite' instead of 'N/A' for expires_at when athlete is on Lifetime PRO","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/f433f2c64d07d3445583ec06860a1b6d90f0e0ae"},{"sha":"88979edb99bde18cb673bf92c5ba6a121ddeb10c","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Update app description and documentations","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/88979edb99bde18cb673bf92c5ba6a121ddeb10c"},{"sha":"e2af21ac5109087442dc3809526f34296e26b06f","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Redesign and update FAQ content","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/e2af21ac5109087442dc3809526f34296e26b06f"},{"sha":"3d4905be0544d965c70f597023c1396d0f9f0383","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Create a 'Renew' button in Settings for non-lifetime PRO athletes","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/3d4905be0544d965c70f597023c1396d0f9f0383"},{"sha":"3a938c6472a013b63baf4d9f12d8d882712c9d83","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Allow fetching only athletes with PRO subscriptions","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/3a938c6472a013b63baf4d9f12d8d882712c9d83"},{"sha":"520150a7a237ca14859a4820e7c1c686e932a08e","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Fix FAQ system tests","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/520150a7a237ca14859a4820e7c1c686e932a08e"},{"sha":"fce33634a1b0e1175db1e5570e30dd89d3a23301","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Explicitly compare ENV variables with true/false strings","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/fce33634a1b0e1175db1e5570e30dd89d3a23301"},{"sha":"e15f6aa0474a4faceeca838658303616066d5b80","author":{"name":"Yi Zeng","email":"3f5d8ebf5005e810d953a79c4d47e02ea6cd8315@gmail.com"},"message":"Emphasis it's only for running on all instances of 'Strava best efforts'","distinct":false,"url":"https://api.github.com/repos/yizeng/strafforts/commits/e15f6aa0474a4faceeca838658303616066d5b80"}]}
{"actor":{"display_login":"yizeng"}}