Beeminder Changelog (latest↓)

Before we publicly launched Beeminder in 2011 we committed to deploying and tweeting one User-Visible Improvement to Beeminder per day. We diligently maintained our average — enforced by Beeminder — for over 2 years before we messed up and had to pay one of our users $1000. That offer remains very much open. Go to the "Take the Beeminder founders' money" thread in the forum to claim our $1000 if we go off track again! Despite the one derailment we've continued uninterrupted for going on 2500 days (over 6 years!) and counting...   (If you're bored you can show all our notes-to-selves.)

A Gap???

From our first public UVI in 2011 through 2014 June 18 we only logged our UVIs by tweeting them (@beemuvi). But since we fully expect to outlive Twitter we exported everything and are hosting the archive separately while we gradually convert all that and move it to this page so everything is in one place. There should be no gap when we're done!

2015 January - November

  1. If there was an error submitting credit card info we left the submit button disabled till you refreshed. #bugfix HT Faire Soule-Reeves
  2. We finally actually have a radio button for Do More vs Do Less when creating Rescuetime goals!
  3. Bugfix in Sleep as Android integration where we might've missed the first day's data after goal creation
  4. Added a warning to Take A Break about safety buffer caps, w/ link to settings (only applies to premium users who can set safety buffer caps)
  5. Beedroid 2.4! New summary widget (so handy!), Buzzing bee animation (so cute!), Better icons (so modern android!), & no less than 7 bugfixes
  6. For the full list of changes in version 2.4 of the Beeminder Android app: Settings → About Beeminder → ChangeLog [10 UVIs in 2 tweets!]
  7. Another improvement to mention in the Beeminder Android app: replaced webview w/ imageview for graphs, meaning it's faster on slower devices
  8. And a bugfix that was driving at least one of us crazy: if you open the app via a desktop widget you can now task-switch away & back to it
  9. Gitminder bug (introduced by arbitrary deadlines) where we could skip a day if you had 2 days in a row w/ the same number of commits #bugfix
  10. Updated our google oauth2 lib but didn't migrate database, so some who used to sign in w/ google couldn't sign in to the Android app #bugfix
  11. Removed the deadline (due date) info from the goal gallery listing on goals that are finished. (They're no longer due!) #mini (ie, mini UVI)
  12. Fixed whitespace in bot reminder emails that made format instructions for replying with data needlessly confusing. HT @zooko #mini
  13. "Units" placeholder in goal wizard, refresh the graph after stepping down the pledge, linkify "advanced settings" in recent data. #mini ×3
  14. We were wrongly saying "you've reached your pledge cap" in legit check emails for anyone with a pledge stepdown scheduled. #bugfix
  15. We were accidentally including withings/fitbit bodyfat goals in our weight loss science experiment. #bugfix
  16. Not sure it should count since we had to do literally nothing (HT Stripe) but we auto-update most user's credit card expiration dates now
  17. Anti-slopeslipping: this = last UVI we'll count ∀ ongoing improvements to Stripe checkout, Discourse forum, etc where we don't lift a finger
  18. A self-rate-limiting catch on reminders that suppressed them if the last was <12h ago led to us (rarely) skipping reminders AND zeno #bugfix
  19. Fixed Quick Add whitespace bug (HT @PareidoliaX) which turned out to be idiocy in an undocumented part of our API #bugfix
  20. Rare failure of legit checks in certain cases where we bcc us humans (eg, high pledge amounts); we caught all cases so far manually. #bugfix
  21. Beeminder Android app v2.4.1 fixes freezing after goal creation/deletion & sync progress indicator didn't work on some devices. #bugfix ×2
  22. Mini UVIs: Link and hovertext on & added "e.g." to placeholders (people would not notice it was just a placeholder)
  23. We'd send a scary email about how some new/unknown email address added data to your goal when an admin fixed your emailed data. #bugfix
  24. Twitter autodata bug: last datapoint traveled forward in time if you hadn't tweeted anything new. HT @gdedkins #bugfix
  25. Reminder time & deadline time accept time of day like "2300" now, & error rather than die on bad input. Related to previous UVI
  26. There can be only one (gmailzero goal)! If you try to create 2nd: warning, redirect to existing one (even if archived) HT Malcolm Ocean
  27. Got rid of the crufty/confusing "reset road at X" datapoint comments in favor of "DERAILED"; tweaked the comment for PPRs too. #mini
  28. Oops, we were saying "DERAILED" for restarted goals. Now meta datapoints are one of {"PESSIMISTIC PRESUMPTION", "RECOMMITTED", "RESTARTED"}.
  29. You can now set pledge caps below your current pledge (which take effect when/if you actually drop your pledge to the cap) HT @Jolly #alice
  30. Mini UVIs: smart submit buttons for integrations, labels clickable for pledge cap radio buttons, wording of "reached pledge cap" #mini ×3
  31. Do some actual input validation on "roadall" in the API. HT @chipmanaged Cf previous UVI
  32. For ppl who'd created gitminder goals before or out of freebees, we were failing to redirect to the goal page after goal creation #bugfix
  33. Also could fail to ensure you'd auth'd before creating gitminder goal #bugfix. Also always use fancy landing page layout for goal creation.
  34. 2 mini UVIs: reworded confusing "extend it first before using retroratchet", added warning re start dates for scheduled breaks. HT @aaronpk
  35. Reminder email was missing link to the goal for goals manually marked as autodata; also has more goals & sorts better
  36. Ongoing heroic JS refactoring continues to break things. Do More goals created after Odometer goals had spurious initial datapoints #bugfix
  37. Beeminder is very proud to be one of a handful of launch partners for the new @Epson #quantifiedself wearables:
  38. We were preemptively trying to create your Withings goal, causing a spurious "couldn't save goal" error immediately after sign-in #bugfix
  39. 3 #mini UVIs: added hovertext for Buzz on front page, improved it for integrations, added username to subject of account confirmation emails
  40. Epson: Fixed date issues that could cause missed activities, time zone issue, & aggregating multiple datapoints for a single day. #bugfix ×3
  41. Eek! We let you change the road dial on frozen goals, which usually led to insta-derail. Now: force you to use the restart button! #bugfix
  42. Fixed a passel of glitches with Sleep as Android auth (via Google), confusion with previously issued keys and expiring tokens. #bugfix
  43. Added API documentation for rah, delta, callback_url, description, graphsum, lanewidth, deadline, plotall, etc. HT @instigate_it
  44. Two things in landing pages: consistently hide goal form when showing pledge info, and opaque overlay when showing infinibee. #bugfix ×2
  45. Mini UVIs: typo fixes in hovertext in settings, fix checkmark symbol in api docs, pruned testimonials, copyright year thing. #mini ×4
  46. We weren't alerting you if there were problems with your credit card on premium renewal; now we email an alert, and only retry a few times
  47. Much prettier auth page with simple green vs red buttons to confirm/reject. (When you authorize a 3rd-party app; cf
  48. If you weaselproof yourself you can no longer edit data or add it via the email bot for autodata goals. #closingloopholes HT @joeymac1981
  49. In graph hovertext, bot emails, etc, safety buffer now refers to approximate number of days till derailment, not confusingly that minus one
  50. Consistent grammar/orthography ("beeswax", "e.g., foo" not "e.g. foo", "~N days until" in retroratchet), iOS favicon. HT Nick Head #mini ×4
  51. Important #bugfix in API's roadall (1 of 3): We were ignoring rate units (runits) for roadall and treating it as if it was always days
  52. Roadall #bugfix (2 of 3): Discontinuities in the road weren't handled right, led to rejection of road changes that should've been allowed
  53. Roadall #bugfix (3 of 3): Floating point comparison bug: rejected resubmission of unchanged road matrices! HT @instigate_it @chipmanaged
  54. Moved list of 3rd party apps you've authorized to access your beeswax (Beeminder data) into user settings so it's actually discoverable now
  55. Also linked and and to each other. HT @Malcolm_Ocean
  56. Finally there's a button to regenerate your personal auth token in the advanced account settings page (where we show it to you)
  57. A new aggday type: triangle. Described in a forum thread. Huge HT @DRMacIver.
  58. From Jan 30 to Feb 26 HabitRPG goal creation gave cryptic errors in place of graph image at first (tho goal got created) #bugfix
  59. Explanatory text and visual improvements in HT @instigate_it who's been a huge help with API hacking lately.
  60. Added hint "(Did you mix up auth_token and access_token?)" to an API error message and added two more aggday functions: square and clocky
  61. To catch infinite loops w/ our new (beta only still) IFTTT triggers (or other autodata schemes) there's now a cap of 144 datapoints per day
  62. Important #bugfix in drawing the graph after a derailment where it could fail to flatline past the derail day
  63. Now over-achievers can have every day be an eep day too! (on Do More goals, set 'Max Safety' to 0 just like manual ratchets) #planbeeperqs
  64. Datapoints + centerline of YBR now show on top of bull's eye. #mini (And so many improvements to Garmin & IFTTT; contact us to beta-test!)
  65. Subject lines of legit check emails are now like "paying $X, now pledging $Y on bob/foo: beeminder legitimacy check" (key info up front)
  66. Fixed the Epson "this data is autogenerated" link: now specifies whether you created goal with Pulsense vs Runsense #mini
  67. Discovered we were silently failing on Fitbit oauth errors: now puts up a banner letting you know what's up. #bugfix
  68. Made the API's create_all call (for adding datapoints) a bit more robust/accepting, as Bee explains
  69. Added Epson to (had it on front page but forgot it here) & auto-update the verb in the form, eg "i pledge to sleep" vs "to train"
  70. Tweaked legit check copy ("Any other technicalities or even just confusion about the rules?" and PS about pledge stepdown) #mini
  71. Beeminder launches official Garmin integration!
  72. Fixed bugs w/ watermarks on graph thumbnails, and maybe now they're bigger and so more readable from the thumbnails (forum post)
  73. Mini UVIs: Another aggday function: count; copy tweak for reminder settings; new robots.txt (not that human users should care) #mini ×3
  74. Use user's timezone in comment 'Auto-entered by Garmin at TIME' & fixed link by recent data "this data is autogenerated by ..." #mini ×2
  75. Updated a banner from "email settings updated" to just "reminder settings updated" cuz you can update sms reminders there too #mini
  76. Had a bug with sometimes missing data from Garmin's pushed data. Now periodically check for missed data #bugfix HT Jana Beck
  77. Bugfix in the SMS bot: in multi-line SMS, if there's a blank line in the middle we'd 500. Now politely skip them instead. #bugfix
  78. Our timezone info was out of date (eg, Moscow stopped summertime sometime recentlyish); updated the tzinfo gem for latest timezones. #mini
  79. Brief bug w/ the email template for "your credit card failed" emails when we retried a charge that caused us to not send the emails #bugfix [for ~1 week]
  80. Our Jawbone goal wizard said "pounds" when in fact weight data from Jawbone seems to be only KGs #bugfix forum
  81. Half (or more) of scroll-to-locations in autodata landing pages weren't scroll-to-ing (draftin, codeschool, trello). #bugfix
  82. Broke and then fixed the confirmation emails for new users signing up. #mini #bugfix (a net-zero UVI but it counts! (related to Science!))
  83. New advanced setting to hide y-axis numbers, like if you want to share your weight loss progress but not your weight forum
  84. was breaking if someone with no datapoints added themselves #bugfix #mini
  85. form was not redirecting back to the landing page after authenticating #bugfix
  86. Email bot reminders for goals w/ data fed from our Epson integration now are specific to the kind of goal (running/steps/sleep) #mini
  87. Added Garmin to the front page and added links to the landing page. #mini
  88. We were showing the "you really should add a credit card" banner thing when not logged in. HT @DRMacIver and @chipmanaged #mini #bugfix
  89. There was an error in Epson sleep goals causing us to double-count time (in Epson's API, end dates are inclusive) #bugfix
  90. Beebrain #mini #bugfix: tmin defaults to min(tini,asof), in case you want your YBR to start in the future for some reason. HT @chipmanaged
  91. The API now supports upsert. Set upsert=true (and include a requestid) for create datapoint, and it creates or updates. HT Malcolm Ocean
  92. Now upsert works without needing an "upsert" parameter. Way better. POST a datapoint w/ requestid, it returns CREATED, UPDATED, or DUPLICATE
  93. Gmailzero goals no longer do the hideous hack of adding a dummy datapoint for yesterday to make the start of the road stay put
  94. More prettying/concising of the "allow this app to access your beeswax" page [previous UVI] and blog post authors back on front page
  95. API #bugfix: when using "me" param in place of username, and getting a 404, we'd give a weird error ("you're logged in as...") HT @DRMacIver
  96. When a goal that's counting down to being archived derails, we were incorrectly saying "paying/repledging" in the legit check. #bugfix
  97. iOS app 3.2! You can add a Beeminder widget to the Today view; shows up to 3 goals in urgency order, plus bare min needed if beemergency
  98. Also in Beeminder iOS app 3.2: Robuster push notifications (robust to device token expiration or connection flakeout) + other bug fixes
  99. Documented upsert in and made a best-of collection of Beeminder blog posts:
  100. Blurb below Allow/Cancel buttons: "We call this 'accessing your beeswax'. You can revoke access any time in Settings → Apps [link/tooltip]."
  101. Now allow new GmailZero goal if old is archived. Fixed unique slug error. Missing error messages on GmailZero landing page. HT @carlcoryell
  102. Rare bug w/ autoratchet=0 & goal end date: we ratcheted w/out checking end date, yielding enddate++ every day. #bugfix HT @chipmanaged
  103. Related #bugfix: rare infinite loop trying to recommit you when ending a goal in the red (added explicit check for "goal recommitable?")
  104. API #bugfix: requestids should only be checked for uniqueness within the goal, not all the user's goals. HT Malcolm Ocean
  105. Mini UVIs: typo fix in API docs (reqeustid) + upsert works for create_all now as well. #mini ×2 HT Malcolm Ocean
  106. Timestamp for datapoint POST now defaults to Now, OR whatever the existing timestamp is, if it's being updated. HT Malcolm Ocean yet again
  107. Transition to OAuth2 for GmailZero! (Alert in bot emails to re-auth, new goals now use oauth2 (not sketchy "this is unsupported" oauth1))
  108. Large inboxes work, no more "you have more than 1000 messages"; you can query "in:inbox AND is:read" in Gmail to see what Beeminder'll count
  109. Show the actual email address that you're authed with again at #bugfix related to the GmailZero OAuth1→2 transition
  110. GmailZero OAuth1 is now dead! Added error banner if no OAuth2; include "reauthorize us" alert in GmailZero zenos (in addition to reminders)
  111. The "Are you sure you want to remove this service option?" in didn't let you actually cancel! #bugfix HT Sean Fellows
  112. Fixed dates in datapoint export: off-by-1 in some instances because we weren't using new daystamp from Arbitrary Deadlines refactor #bugfix
  113. One more GmailZero OAuth #bugfix: handful of people got a 500 error trying to reauthorize (stuff with expiring/revoking/refreshing tokens)
  114. Dumb #mini #bugfix: typo in link to fix your auth if we got permission errors trying to fetch your Sleep as Android data (was 404ing)
  115. Garmin (& IFTTT) autodata pushes were failing if their JSON had non-ascii characters. #bugfix Also an infrahancement [infra]
  116. More GmailZero #bugfix's: failed to add a datapoint if 0 messages, failed to handle pagination & count more than 100 threads
  117. Now simpler to beemind multiple languages on Duolingo: we retry and wait 3 days before giving up if no points found for your language
  118. Copyediting pass through the API docs: mention idempotency, better/clearer links, tighter prose, cuteness, etc.
  119. GmailZero counts the min of the day but we now show, in the comment of the last datapoint, the actual last count fetched. Demystifying!
  120. A GmailZero improvement so momentous we blogged about it: beemind arbitrary queries!
  121. If there's an error w/ a client application's "post deauthorize callback", email the actual app owner so they can do something about it.
  122. Seeming bug in Gmail's API returning spurious empty messages that we're working around now by disregarding. So less overcounting. #bugfix
  123. On the outstanding charges page, when you update your credit card, don't keep saying "...when you update your credit card..." HT Robin Ryder (@Pruneau)
  124. FEATURE: Added "Total Calories Eaten" to the things you can beemind with Fitbit
  125. BUGFIX: Safety buffer off-by-one in bot reminder copy that says "in the red!" vs "in the wrong lane!" [and prefixes over hashtags? yay/nay?]
  126. OLDIE: Zapier button + regular refresh button for Zapier goals to run your Zap manually when working down to the wire (also better tooltip)
  127. FEATURE: You can now create multiple GmailZero goals (for the same Gmail account). Just name each goal you create at
  128. Announcement! Beeminder is an official IFTTT Channel! So many things to automatically beemind...
  129. Fancy landing page for our IFTTT Channel at (and did we mention we published 57 Recipes that use Beeminder?)
  130. So many other IFTTT-related UVIs we haven't been able to tweet til now: specifying IFTTT as autodata source, button for manual refresh, etc
  131. IF you delete/archive a goal that an IFTTT recipe is trying to send data to THEN we send a nice email explaining why the recipe's failing
  132. Rearranged autodata integration icons on the front page, added IFTTT (still catching breath from the launch, which was like 57 UVIs in 1!) #mini
  133. In Trello integration, use latest datapoint, not a 0 when we can't reach Trello's API, otherwise you get unwanted odometer reset. #bugfix
  134. Fixed 500 error in API when no goal provided. #bugfix (first verify parameters, *then* find the goal!) See previous infrahancement
  135. FEATURE: Under the thumbnails in the gallery we now show how much is due, not just when
  136. Relatedly, the Quick Add box now actually causes the amounts under the thumbnail to update immediately. (forum discussion) #bugfix
  137. Fixed the blurb under the thumbnails for Do Less goals so they don't give a deadline (which was confusing anyway) and just say today's limit
  138. Do Less roads had wrong initial width implying you cd go hog wild on day 1 only to say "jk ur in the red" on day 2 #bugfix HT @noackstefan
  139. Safe days IFTTT Trigger had a bug that made it trigger twice if deadline after midnight and still in the red down to the wire. #bugfix HT @rhitsqueaky
  140. Macros you can use in IFTTT recipes to turn not-strictly-numeric Ingredients to beemindable numbers (forum discussion) (eg time-of-day)
  141. Mini UVI: Now truncate instead of wrap long usernames in (keeps them all nice and neat and uniform size)
  142. We added swimming as an activity to beemind in our RunKeeper integration. HT Emilie Lostis
  143. We did this a long time ago (buzzing infinibee UVI) then partially broke it. Should now consistently time out. #bugfix
  144. Now always email you if an IFTTT Recipe's trying to find a missing goal; were only doing so for Add Datapoint Action, not Triggers #bugfix
  145. We missed cases of notifying you on missing goals, namely @IFTTT Recipe triggering on beemergency or safe days on a specific goal #bugfix
  146. Our IFTTT macros can now be nested! (forum discussion)
  147. Mini UVIs: don't try to pluralize the goal units in the default y-axis string, fixed broken link in #mini ×2
  148. Similar to the gallery blurbs for Do Less goals, non-autosumming (and w/o odom reset feature) goals now show the absolute bare min, not delta
  149. Official Misfit integration! Our blog post here: -- and look at us in their partner gallery:
  150. Misfit integration features: beemind amount of sleep or steps. Option to import last month's worth of data when you create the goal.
  151. Finally, we use Misfit's push API so Beeminder updates your graph (roughly) as soon you sync your Shine/Flash
  152. Have lots of goals/datapoints? Should see up to 50% faster syncs in the Android app (was partly responsible for server issues last week too)
  153. Goals w/ deadline after midnight would wind up w/ datapoints off-by-one-day if you re-scaled them (bottom of advanced settings) #bugfix
  154. The API's roadall was giving a 0 timestamp in the final row instead of null when value and rate (but not goaldate) were specified. #bugfix
  155. Now the hard cap / bare min numbers show *both* deltas and absolutes; this is kind of terrible but better than previous mess we made
  156. Small improvement to iOS EEP alerts: "+X due by DEADLINE" (was "by end of day" but that's changeable)
  157. Added a helpful table of upcoming week's worth of Bare Mins (or Hard Caps) to the sidebar of your goal!
  158. When you choose "hide y-axis" (for people who want to show off their graph but not the numbers) we now suppress the bare min etc numbers too
  159. Got rid of most of the confusing baremin/hardcap numbers above graph, since we have the Helpful Table; now just 2 confusing numbers up there
  160. Official Skritter integration!
  161. Made hard cap / bare min numbers and the table in the sidebar update live when you add new data
  162. Fixed a confusing bug with the baremin/hardcap table that could cause the values to be nonmonotone if there were upcoming kinks in the road
  163. New stats in sidebar: both daily and weekly rate (as of today, as opposed to road dial which gives it as of akrasia horizon) plus average rate
  164. We forgot to respect the user's deadline in the Due By table. Now the listed days are defined to end at whatever your deadline is. #bugfix
  165. Added nice tooltips explaining the new traffic light fanciness (in short: how much you need to do to get one more day of safety buffer)
  166. Medley of other UVIs with traffic light and table: better heading, say "hard cap" when apropos, deltas on mouseover, other bugfixes, tweaks
  167. Last one for now: We color-coded the amounts-due-by (or hard-cap-by) table. Now the new UI should unambiguously dominate the old one!
  168. Fixed bug in previous "confusing" bugfix that monotonized the table values the wrong way so all upcoming Due Less hard caps were identical
  169. New API parameter safebump tells you what value you need to reach to get one more day of safety buffer, in the case of Do More goals
  170. Tooltips on Bare Min / Hard Cap section and in the Due By table show up on click and on hover; tooltip explains Due By table
  171. Bugfix with Due By table and stats: now they always update on new data (before there were some cases where you had to reload the page)
  172. Copy tweak on graph errors (don't ask you to email support, we automatically do that and come to the rescue) + dumb bugfix w/ Do Less hardcaps
  173. Broke Duolingo integration last night working on custom deadlines! Fixed it this morn (and fixed spurious derails; thx for the forbearance!)
  174. Don't include secret goals (which show up only as masked bee, because secret) in and warn if you try to set secr. and feat.
  175. Our Skritter form -- -- is now consistent that the metric is *time* studied, not points. #mini
  176. #bugfix in our IFTTT error emails. Now provides hint as to what went wrong if a recipe sends Beeminder bad data. HT @robby1066 of @rescuetime
  177. Helpful onboarding widget for newbees! (So you veterans won't see it and only half of newbees will, because bucket-testing) HT @useronboard
  178. Fixed contrast of tabs/navpills on the sign-up/in modal (when prompted to sign up/in from landing pages). Now you can see there're two tabs.
  179. Fixed Duolingo redirect (was sending you from Duolingo signup to yr goals after sign-in/up). Also nicely jumps down to the "Ready?" anchor.
  180. Placeholders use "e.g.," everywhere, or in some cases are just sufficiently bossy as to not be confused with actual data
  181. No longer allow 'remind' as a goal slug. That's a special route for reminder settings so things broke if you tried to use that name. #bugfix
  182. Minor #bugfix w/ default y-axis label: lost units when we fixed this pluralization thing. HT @instigate_it
  183. Can now opt out of weight loss mannequin study. Some people don't like them because of flashing, or because they say they're creepy.
  184. Our Skritter integration now checks previous 4 days of data so we don't miss any time due to lag betw end of day and all time reflected API
  185. Beeminder iPhone app 4.0! (We may've accidentally made it require iOS 8.3 instead of the intended 8.0) Faster, robuster syncing and submitting
  186. Beeminder iPhone app now shows the amount needed to get an extra day of safety buffer if you're already in the green
  187. Beeminder iPhone app has multi-column landscape view on iPhone 6 and iPad, and lets you sign in w/ your Google account
  188. Beeminder iPhone app (4.0) now updates the goal in the gallery immediately after updating the graph
  189. Beeminder iPhone app has redesigned data entry fields to help ensure correct formatting and are generally easier to use
  190. Beeminder iPhone app now correctly handles renamed goal slugs; and handles entering data on keyboards w/ radix "," instead of "." #bugfix ×2
  191. We weren't allowing for more than 1 sleep on a given day in our Misfit integration; now we make them unique by start-time, not date #bugfix
  192. Imported data on new RescueTime goals now viewable if you adjust x-min to be before the import date (previously was imported but invisible)
  193. Added a link to IFTTT integration on and made the links to integrations not open in new tabs (no target=blank)
  194. Our RescueTime integration was giving the safety buffer option, but ignoring your pick in the case of do-less goals #bugfix
  195. Rare bug in odometer goals was triggered when day before derail had multiple datapoints; were picking wrong value for resetting road #bugfix
  196. New ratelimit-specific error email for IFTTT goals adding too much data. Were sending a generic "bad datapoint" email, which was confusing.
  197. Beeminder iPhone app v4.1 fixes, we believe, the disappearing goals bug but may have to delete and reinstall (another bugfix version coming!)
  198. We were double-counting certain closed issues in Gitminder #bugfix (ie, issues closed betw midnight and autodata fetch shortly after midnight)
  199. If there was an auth error with your GmailZero token, we were only adding a 0 datapoint, not telling you it's broken. #bugfix
  200. Rare bug w/ blank pledge caps (involved a double-save on goal setup) caused us not to send legit check #mini #bugfix and emailed ppl affected
  201. New stat in the Stats box in sidebar of goal page: "90% Variance" which is actually a 90% quantile on... well, see
  202. Night Owls, you can now customize deadlines for Duolingo goals. Thanks @wycats for keeping on us this whole time! (We clearly need that.)
  203. Oops, inverted which deadlines can be set, which can't #bugfix + We're now consistent in referring to "derailing" rather than "losing" #mini
  204. Got rid of sadreset in Jawbone, meaning that when you create a new goal and we import your data, you can actually adjust xmin and view it.
  205. 2 RescueTime UVIs today: we had a bug where we didn't let you correct the key if there was a problem. Now we show an error message. #bugfix
  206. Second RescueTime improvement: Sub-category minding! Some middle ground btwn minding a specific app and, eg, the entire "Business" category.
  207. Our Jawbone goal creation wasn't giving you the option for an initial week of safety buffer. #bugfix
  208. In "sign up/in" dialog for some of the autodata integrations, the header was giving text specific to Sleep as Android integration. #bugfix
  209. Long overdue cleanup of our page; mainly adding Support Czar, Chelsea Miller.
  210. The email bot now gives proper threaded replies when you email data to it! (Churning through prereqs for our big reminders revamp...)
  211. Dropped the option in reminder settings for getting a reply, figuring now that it's a proper threaded reply who wouldn't want it. Simplify!
  212. If a charge was created via the API w/ no note describing it then the alert email wouldn't get sent to the user. #bugfix
  213. When forcing you to pledge (cuz no freebees) on a new Fitbit goal we were failing to redirect to your goal page after creating it. #bugfix
  214. A bug in some "proper replies" was causing mailgun to retry messages it thought had failed, causing us to add duplicate datapoints. #bugfix
  215. Our TagTime integration now understands Beeminder deadlines! (Our TagTime integration is, however, still kludgetastic, involving perl+xterms)
  216. Now give an error instead of letting you shoot yourself in the foot w/ a custom goal that has both odometer and auto-summing set true. #mini
  217. Added the goal attribute "fullroad" to the API (Plus documentation fixes like list of "skinny" attributes)
  218. Workaround ("try refreshing page") for retroratchet not noticing new data added; base "90% variance" only on data since YBR start. #mini ×2
  219. We now retry GmailZero, RunKeeper autodata fetches if they time out; Prepended [initday,initval,0] row to "fullroad" (API) HT @instigate_it
  220. We put user-initiated autodata fetches on a higher priority queue, and less infinibee buzzing for background autodata fetches
  221. Now for Fitbit and Withings you can use x-min to adjust the plot range and see imported data (new goals only; fixing existing ones soon)
  222. Added "yaxis" and "nomercy" to the API. Also fixed asterisks accidentally getting interpreted as markdown on
  223. No longer requiring the datapoint value when doing an update to the datapoint via the API (ie, you can let it default to its existing value)
  224. New warning when scheduling a break: "You have Pessimistic Presumptive Reports turned on for this Do Less goal. Careful they don't..."
  225. Configurable Retroratchet is now free! (Existing Bee Lite subscribers, we'll email you tomorrow about this and another change to Bee Lite.)
  226. Oldie: IFTTT error emails were missing the name of the goal in error (not applicable to 'any goal' type triggers) #mini #bugfix
  227. The goal progress box in the sidebar is now collapsible, with the Archive button above it instead of inside it. #mini HT Justin Kwok
  228. Fixed the bug in the API that made the Goal's "datapoints" parameter expect the string "true" instead of the JSON boolean true. #bugfix
  229. Our Garmin integration was failing on manual activities w/ no distance specified (for goals tracking distance) #bugfix
  230. If you signed up for Beeminder and didn't fill out a required field or gave a bad email address, etc, we'd barf a 500 error at you. #bugfix
  231. Our IFTTT datapoint-added trigger sometimes triggered multiple times for same datapoint. #bugfix w/ updating flag for when we last checked
  232. "Multisport" activities from Garmin were causing duplicate distances to be logged so now we ignore those. HT @notspelledright #bugfix
  233. We messed up grandfathering certain SMS users such that they couldn't update their user info at all (eg, changing a password) #bugfix
  234. Too many people not understanding the week delay in archiving goals so we made the pop-up pop up when you first press Archive, to explain
  235. If you forget to hit submit on the quick-add form (right side of goal gallery) it now actually warns you. #bugfix Cf previous UVI
  236. Oops, just selecting goal in quick-add box shouldn't trigger the "are you sure you want to navigate away w/out submitting" warning #bugfix
  237. Another #bugfix: if you tried to submit bad data in quick-add and *then* tried to navigate away, the warning would fail to happen
  238. We no longer give a 500 error when you specify roadall in the API on a goal currently in an error state (Beebrain). #bugfix HT @chipmanaged
  239. And on the website, goals in an error state (eg no data) gave an embarrassed bee error (500) if you tried to dial/restart them #mini #bugfix
  240. Clarified error message and outlined the errored field in red in reset form when you don't give the reset value for the graph #bugfix
  241. Were accidentally requesting non-https version of useronboard widget which caused warnings, plus conditionally include it cuz faster #bugfix
  242. Beeminder now uses Habitica's new name and logo! (Previously HabitRPG) Special thanks to @lady_alys
  243. API now gives permissions error if you try to change the slug (premium only) instead of silent failure #bugfix HT Chris of
  244. Changed the subject lines for zeno polling emails to give the deadline instead of "in 0 days"
  245. Added a warning and disabled rescaling of graphs with automatic data sources (can't rescale the graph without rescaling incoming data!)
  246. Fixed broken images after HabitRPG→Habitica transition. Also updated API docs to mention the daystamp attribute of the Datapoint resource.
  247. Weaselproofed goals now also don't let you change their data source back to manual. People complained about us letting them weasel that way.
  248. Yesterday's UVI broke the workaround for changing deadlines on IFTTT/Zapier goals so we fixed that. You can change IFTTT/Zap deadlines now.
  249. Scootched the gryffin closer in Habitica logo to make collage work. Added daystamps to all Datapoint examples in #mini ×2
  250. Fixes to the "Due By" / "Hard Cap By" table to always use the right heading and "total" vs "value" (for auto-summing or not) as column label
  251. Deadlines can now be as early as 7am! And added explanation to hopefully mitigate confusion regarding earlybird vs nightowl deadlines.
  252. RunKeeper goals can now have arbitrary deadlines!
  253. Added new FAQ item about Rarely Asked Questions, with lots of links to "Beeminder around the internet". #mini
  254. The "bare min / hard cap" header above the graph now says the right thing for Rationing goals (metrics you want to go down but not too fast)
  255. Background job (that checks for Garmin data that failed to push) wasn't checking for valid auth. Caused a few cases of missing data. #bugfix
  256. Fixed help text tooltip for "Due By / Hard Cap By" table to tailor it for the case of Do Less goals. HT David Storrs
  257. We were sometimes getting the date wrong for Duolingo data with non-midnight deadlines when fetched via Beeminder's refresh button. #bugfix
  258. Improvements to like better links, hovertext, explanation of derailment in "How Beeminder works" HT Bill Adams
  259. Hitting Beeminder's refresh button right after midnight no longer derails you if a fetch from the previous day's still queued up. #bugfix
  260. Expose the integery parameter for custom goals (even though it doesn't do much but change how some bare min etc numbers are displayed) #mini
  261. We now support arbitrary deadlines for Code School goals!
  262. Added more tooltips in Terrifyingly Advanced Settings. Unclear whether the terror level went up or down. #mini
  263. Added new Q's to (blog stuff, integrations) and link to and fixed syntax errors w/ other links
  264. New IFTTT macro for recipes that send data to Beeminder: PROD[] (as in product, as in multiplying) (more on the forum
  265. We now support arbitrary deadlines for Trello goals!
  266. We now support arbitrary deadlines for Withings goals!
  267. On front page, updated "guaranteed fresh" link, hovertext for that and main navigation links, don't open blog in new tab, and IFTTT macro bugfix
  268. For goals where we're pretty sure it's measuring time (goal units = "hours") show the recent datapoints as HH:MM:SS not fractional hours
  269. Moved rate units to basic settings and exposed goal units there (now that we actually use goal units for something)
  270. Fixed caching of the recent datapoints so if you set your goal units to/from "hours" the time-based display will happen right away #bugfix
  271. Archiving now happens at the min of {Akrasia horizon, Goal date}. Which also means insta-archive for completed (but not frozen) goals.
  272. If you derail on the day that your goal is scheduled to archive, the archiving now always happens first (actually just midnight prev night)
  273. Reminders Revamp! Huge simplification of reminder settings. Each goal has 3 relevant settings: zeno start time, days lead time, deadline
  274. Reminders Revamp 2 of N: Now possible to have *only* emergency day alerts (set days lead time to 0, the default), w/o wrong lane alerts too
  275. Reminders Revamp 3 of N: You now have more control over alerts for Do Less goals (though some confusion remains re: what "safe days" means)
  276. Reminders Revamp 4 of N: Global defaults for reminder settings! And for each goal you can choose to inherit from defaults or not
  277. Sort of part of the reminders revamp: we also now have global defaults for pledge cap and for whether to do no-mercy derailments
  278. Lock icons on pledge cap and no-mercy if they inherit from global defaults (cumbersome but at least no confusion about where to set them)
  279. Reminders Revamp 5 of N: To turn reminders off altogether: either set alert start time a minute before deadline or set days lead time to -1
  280. Now using html emails for the alerts (though we're barely taking advantage: links instead of raw URLs, bullets) Also: bugfixes w/ email body
  281. Reminders Revamp 6 of N: Decoupled beemail from reminders a bit more in that you can say "never" to beemails w/out stopping all reminders
  282. Reminders Revamp 7 of N: Single setting for SMS vs email (premium only) means less confusion w/ enabling SMS for each goal
  283. Reminders Revamp 8 of N: The SMS bot now does zeno polling (premium only; grandfathered original SMS users from before we announced this)
  284. Reminders Revamp 9 of N: Zeno polling start time no longer restricted to 3am-11:59pm. Now anything in the 24 hours pre deadline (sorta).
  285. Important #bugfix for weightloss/inbox goals where zeno polling would fail to happen if you moved into the red after zeno start time
  286. Changing your deadline now won't let you insta-derail yourself on an eep day, in addition to not letting you snooze w/in 6 hours #bugfix
  287. Reminders Revamp 10 of N: Zeno SMS messages now tell you the number of hours left to your deadline
  288. Autodata vs manual goal reminders had "reply w/ new data" in the subject backwards #bugfix (and briefly broke the "N hours" in subject lines)
  289. Doh, the defaults weren't getting applied to new goals (was using default defaults instead of adjusted defaults) #bugfix in reminders revamp
  290. Bug introduced w/ Withings arbitrary deadlines prevented goals from automatically refreshing after getting new data pushed. #bugfix
  291. Introduced a bug with reminders revamp that made us send you to settings after hitting Retroratchet. Now fixed. #bugfix
  292. Mini UVIs: made Unsubscribe All button red, better description of SMS perq on premium page, days lead time now enforces range [-1,30]
  293. One more mini UVI: changed name of tab from "Email" to "Default Settings" since it's not just email anymore (still poorly organized tho!)
  294. If we fetched new autodata, making you safe, we'd send the Eep! email anyway. And a similar fix for preventing stale eep alerts. #bugfix ×2
  295. Added lifecycle email for newly created goals since reminders revamp means no alerts by default till it's a beemergency
  296. We had a small bug where we'd sometimes send queued up zeno reminders after the deadline was past and the goal already derailed. #bugfix
  297. Zeno subject line included 'respond w/ data' for autodata goals instead of manual, and vice versa. #bugfix Also added time to derail to body
  298. The range for default deadline was (for a while) still enforcing noon-6am after individual deadlines allowed 7am-6am. #bugfix
  299. Autodata polling could get behind & for non-monotonic ones (eg GmailZero) could fail to start zenoing & thus cause surprise derails #bugfix [and spurious derails addressed]
  300. In Runkeeper goal creation: 1) actually show error messages to user, 2) for a day or so we gave 500 error trying to create goals #bugfix ×2
  301. Were failing to respect user-set data source. We try to guess if it should be IFTTT or Zapier, but if you change it back we leave it be.
  302. If you deauthorized Beeminder from Jawbone or something else went wrong we were failing silently instead of throwing up the alert. #bugfix
  303. Rare bug (manifested if autodata push failed and had to poll Withings) with not fetching data prior to a "RECOMMITTED" datapoint. #bugfix
  304. We're now robust to adding stupidly large values like 999999999999999999999999999999999999999999 that used to make everything break. #bugfix
  305. Broke Skritter goal creation: Skritterland requires 4am end-of-day which didn't play nice w/ new default deadlines. #bugfix
  306. Fixed a rare problem with adding duplicate datapoints submitted by email (related to email retries). Now check message ID to de-dup. #bugfix
  307. Patch for IFTTT add datapoint TOD (time-of-day) macro to turn 12-hour time of day strings to 24-hour (like add 12 if it's PM... and <12)
  308. Renamed defaults tab to 'Reminders/Defaults', rearranged/edited "new goal" email copy, tooltip for "-1" in indiv. alert settings #mini ×3
  309. Added leadtime and alertstart to the API -- (Thx Andy Brett; & this portends big reminders improvement on iOS!)
  310. Site no longer falls on its face if you give a non-integer (or nil) for 'days lead time' in goal alert settings. #bugfix (from a while ago)
  311. We were sometimes/rarely double counting Sleep as Android time; now disallowing records on same day with same start time. #bugfix
  312. Fixed a sort of off-by-one problem w/ "days lead time" for do-less goals. Zero days lead time means zeno alerts start when you're orange.
  313. Changing goal units made Runkeeper goals stop updating. That was super dumb. But we fixed it! Update gunits to heart's delight. #bugfix
  314. Were silently failing to do anything for GmailZero if you made the query blank; now default to the standard "in:inbox AND is:read" #bugfix
  315. Were failing to regenerate graphs and tell the Android app about changes to deadlines immediately which got goals into weird states. #bugfix
  316. After upgrading from literally the oldest documented version of the Stripe API (from 2011) we broke & then fixed our payment UI. #bugfix
  317. If you had multiple IFTTT recipes triggering for the same Add Datapoint event, only one would actually trigger. #bugfix See forum discussion
  318. New IFTTT macro for counting words in Trigger Ingredients: WORDCOUNT[] See forum discussion
  319. Tweaks to bot emails (pre-vs-ul, link, next check), CSS in blog header (HT Malcolm Ocean), alignment w/ Misfit on
  320. By popular demand, a similar IFTTT macro, CHARCOUNT[], for Japanese and Chinese language learners
  321. Another improvement to the API that was needed for the iOS app: can now query and set use_defaults (grep for it at
  322. We were originally regenerating all your graphs that use defaults when you changed anything; now doing that smarter / more conservatively
  323. New aggday method "nonzero" for plotting a 1 only if there exist any non-zero datapoints. documentation of aggday methods
  324. Creating a goal via API w/ coordinates of road start specified (1st row of roadall) works as expected now. HT Malcolm Ocean and Complice
  325. Beeminder Android app version 2.5! Checkmarks on widgets showing data already entered for the day, visual indicator for unsync'd data, ...
  326. Beedroid 2/9: Now locally buffers datapoint deletions and updates in case you have a flaky connection. And fixes related to stale data.
  327. Beedroid 3/9: The Beeminder icon on the urgent goals widget launches the app. (This is from version 2.4.3)
  328. Beedroid 4/9: If you have tons of data we now only load some of it (performance/reliability reasons), link you to website for the rest
  329. Beedroid 5/9: Fixes with eep day notifications, Tasker, and TagTime notifications, decreased unnecessary server hits on syncing
  330. Beedroid 6/9: Bugfix with stale goals hanging around, and fixed various rare(ish?) crashes
  331. Beedroid 7/9: Bugfixes with notifications near goal date, proper updates of existing notifications. (This is from version 2.4.2)
  332. Beedroid 8/9: Fixed a race condition with summary widget, weaselproofing of autodata goal (no more loophole of manual editing in app)
  333. Beedroid 9/9: Eliminated road dial (kind of a negative UVI but we crammed a gazillion real ones in these 9 tweets so...)
  334. Clarifying text on tabs for dialing/ratcheting road; also a warning about ratcheting to an eep day if you derailed yesterday. #mini ×2
  335. Ratcheting for do-less goals (including autoratcheting for premium folks) now work in terms of goal units, not days. HT @chipmanaged
  336. Beeminder iOS app version 4.2! Graphs now appear in Today widget along with bare min, and several other things in the next 6 tweets... (1/7)
  337. BeemiOS does zeno polling! Adjust individual and default notification settings in-app (known bug: can't change deadline on an eep day) (2/7)
  338. BeemiOS: When changing reminder settings in the app you're changing them for website too; was broken at first but now works. #bugfix (3/7)
  339. BeemiOS: The reload button on the goal screen triggers a refresh of autodata. (4/7)
  340. BeemiOS: Fixed the dreaded spinner bug. And Arabic numerals (the real ones, not the western-derived ones) were broken. #bugfix ×2 (5/7)
  341. BeemiOS: Added a ":" button to allow for data input in HH:MM format (6/7)
  342. BeemiOS: Data entry now defaults to the previous day if it's after midnight but before the deadline. (7/7)

2015 December

  1. We made a new kind of coupon code for Cyber Monday where you get the 2nd period free.
  2. Made it way more obvious when you're using a coupon for a premium plan, by highlighting the coupon description in an green alert box
  3. Now give nice explanatory error msg instead of a blank stare if you give a RescueTime "key code" instead of full key when creating a goal
  4. Fixed the "next check is at" in zeno emails -- since putting it back recently we were giving it in server time, not user time (facepalm) #bugfix
  5. Fixed the "hey you just snoozed your deadline" email that we send out if you move your deadline further away on an eep day (facepalm again) #bugfix
  6. Fixed a bug affecting do-less goals with goal total & rate specified that made us throw an ugly 500 error if you tried to ratchet #bugfix
  7. Introduced a bug where, for rare email clients, we'd re-add your "Recent datapoints" as new data when you replied to the email bot. #bugfix
  8. 3rd party app devs can send users to specific URLs on w/out the user being intercepted by a login screen:
  9. Other updates to our API docs ( not calling IFTTT "about to be launched" and purging the unused "sendmail" param
  10. No longer give permissions error (for users w/out premium plan) when slug is included but unchanged in API goal update. #bugfix HT @diwajd
  11. We were accidentally still sending iOS people 9am notifications regardless of (and in addition to) their zeno settings. #bugfix
  12. Ratcheting do-less goals would no-op on the 1st day of the goal. #bugfix
  13. Error message for "username too long" now tells you what the limit is (it's 20). #mini HT Alex Guzey
  14. Changed the text the archive countdown shows after it hits zero. Now gives an indication that it might (annoyingly) take a bit to kick in.
  15. We broke (2 months ago as part of javascript graphs) and then fixed the Quick Add feature that updates "+N Due by Y" text in gallery #bugfix
  16. Uncheck "start flat" when restarting ⇒ road dial appears like it's supposed to (broke this months ago :/ "start flat" was no-op) #bugfix
  17. Remember when we fixed a trailing whitespace bug in sign-upa? Well the other day @faireness noticed we still werent stripping whitespace when you actually log in :/ #bugfix
  18. We now remember who IFTTT recipes run for so if there's an auth problem later we can email you to tell you the recipe stopped working
  19. Embarrassing #bugfix in deadman switch (stops charging you if go inactive): don't count activity on archived goals from autodata like Zapier
  20. Fixed a mangled error message (and made it spell things out better) about trying to move your deadline earlier on a beemergency day. #mini
  21. If you de-authed Android/iOS apps we weren't cleaning up after ourselves and failed horribly/invisibly if you later tried to re-add. #bugfix
  22. Can now always move your deadline earlier on an eep day as long as still before the deadline (timezone issue; only failed sometimes) #bugfix
  23. Similar bug with snoozing your deadline; now always respects the 6-hour window on an eep day. #bugfix

2016 January 1+

  1. In goal default settings if you tried to submit the form with no leadtime or no alertstart or no deadline it would give a 500 error #bugfix
  2. Typo fix in hovertext in footer (thx Caitlin Patton!) & documentation updates re: roadall not road_dial, & daystamp
  3. Guess what we (@andrewpbrett to be specific) made? A Beeminder Slackbot! Has rough edges (feedback pls!) but works!
  4. Bug in - would sometimes give 500 error & other times not show actual 24 most recently updated graphs #bugfix
  5. Both recent data and fine print now say "public" or "private" w/ link to change it (forum post)
  6. Got rid of superfluous subheading for "Recent Data". Added hovertext for New Data and Advanced Entry tabs. HT Edith Beerdsen #mini ×2
  7. Informative error if goalslug taken etc (forum post) (another thing we broke in the great javascript refactor a year ago) #bugfix
  8. API #bugfix thanks to Malcolm Ocean & Complice: Now the deauth callback actually works so 3rd-party apps know when user revokes auth
  9. IFTTT Improvements!
    • New Zeno Trigger lets Beeminder hound you via any medium connectable to IFTTT (flash your lights, Slack, you name it)
    • "N safe days" IFTTT Trigger now lets you say "less than"/"equal to"/"greater than". Handy for, eg, rewarding yourself for more buffer.
    • Don't laugh but we now have an @IFTTT "Charge me" Action in case you want to instantly sting yourself for going to a bar or something.
  10. In Withings goal creation: if out of freebees we were both not requiring a pledge and not redirecting to your goal after creation. #bugfix
  11. Some small improvements, #bugfix's, robustifications of the Beeminder Slackbot, like actually refreshing the graph when you add a datapoint
  12. And a big improvement to the Beeminder Slackbot: it now does zeno reminders! (Still pretty beta though)
  13. Removed deadline from terrifyingly advanced settings since it's now in reminders and fixed the link to deadline under the countdown #mini
  14. We now send all reminders as push notifications on iOS (not just eep-day zenos). Fixed brief bug where it would wrongly say "eep" on those.
  15. Made the deauth buttons on not squished together. Email/SMS bot no longer says "Emergency" in scarequotes. #mini ×2
  16. Fixed a case of ugly line wrapping in reminder settings; doc #bugfix with platonic goal types in hovertext in custom goal settings #mini ×2
  17. Didn't affect many people but fixed a bug that would leave the "goal is frozen" banner on goals even after updating payment info. #bugfix
  18. We now ask you for your current/recent weight (with option to auto-fetch it!) when creating Withings goals. So much nicer!
  19. Getting explicit starting weight also fixes bad bug that often caused insta-derails when importing Withings data on goal creation. #bugfix
  20. Beeminder Slackbot: it was showing the least recent instead of most recent datapoints, and all instances would fail if one did. #bugfix ×2
  21. New box in the blog sidebar for newbees and overhauled the User's Guide for New Bees post, linked to therefrom.
  22. The calendar date pickers for take-a-break let you pick the same end-date as start-date, then complained at you. Now it's less dumb. #mini
  23. If you had to re-auth Skritter (maybe some others) we were failing to remove error flag & wouldn't automatically resume fetching #bugfix
  24. Fixed a bug on that prevented connecting to Beeminder if you weren't using HTTPS. Also, forced HTTPS. #bugfix
  25. Improvements to our Habitica integration for completed To-Dos!
    • Every To-Do is its own datapoint with task text as the comment...
    • Habitica "More Completed To-Dos" goals are now auto-summing instead of odometer-style
    • No longer any hoops to jump through when deleting completed To-Dos in Habitica; Beeminder remembers everything!
    • The Habitica integration has a 7-day window where changing To-Dos (ie uncompleting them) is reflected in Beeminder #statuteoflimitations
  26. Trivial yet maybe a big deal: Lots of confusion about initial flat spot (eg, bot doesn't bug you for ~9 days) so default now is no flat week
  27. Now two sections of statistics in the sidebar: for datapoints & for the yellow brick road. Added 2 new data stats so far: mean & mean delta.
  28. Mean and Mean Delta in data stats box now interpolate gaps in data, making Mean Delta comparable to daily rate of the yellow brick road
  29. Changed #statuteoflimitations for RescueTime integration from 2 and from Skritter from 4 to 7 days. Hooray for (a bit more) consistency!
  30. Moving deadline out of adv. settings caused bug that prevented graph from refreshing (eg updating watermark) when changing deadline. #bugfix
  31. Were unwittingly removing & re-adding Garmin sleep datapoints every time; made IFTTT "Added Data" Trigger go batshit. #bugfix HT Markos Giannopoulos
  32. If you edited your sleep start time in the Misfit app we'd treat it as a new datapoint & overcount your sleep! #bugfix HT Caitlin Patton
  33. Introduced a bug w/ zeno alerts: after sending the 1st one of the day were accidentally sending them every 5 minutes for some of you #bugfix
  34. We moved the settings for how often you get beemails from "Reminders/Defaults" to "Personal Info" (tweetstorm re: reminders settings soon!)
  35. Better composition of zeno alert. Gives number of days till deadline instead of day of week if >7days away, like in graph watermark. #mini
  36. Multiple improvements to the Beeminder Slack bot: choose for each goal whether the bot DMs you or posts to a channel or both.
  37. And a #bugfix with the Slack bot that made it (sometimes? briefly?) ignore those settings and DM you anyway.
  38. Big change to reminder settings: no more inheriting from defaults; instead there's a button (in advanced settings) to reset to defaults
  39. Equally big change: choose any subset of ways to get reminded for each goal {email, sms, ios, android, slack DM, slack channel, webhook}
  40. Did we mention you can get reminded via webhook now! Also documented as part of the API.
  41. Nice compact table of all reminder settings for all goals. Handy for setting up waterfalls.
  42. Various #bugfix's & tweaks along the way with all that, like breaking & fixing updating of defaults from iOS, making the table pretty, ...
  43. ... changes to the CSS in settings, button copy ("Save Goal Specific Settings"), tooltips, better error-checking w/ webhooks. #mini ×6+
  44. And one more cheap one: We now ellipsify long goal slugs so they don't mess up the nice compact table of reminder settings. #mini
  45. One last small one that we just deployed: a horizontal line in the compact table of reminder settings demarcating the backburner goals
  46. Our RescueTime integration is markedly slicker: no need to paste your API key to authorize Beeminder to access your RescueTime data
  47. Other improvements to RescueTime integration: check do-more by default (which fixed a related bug) & no week of safety buffer by default
  48. One more RescueTime #bugfix: the new hotness broke data fetching for newly created goals for a few days (emailed everyone affected)
  49. How long should something be broke before fixing counts as UVI? Staggering amount broken+fixed in last 24hours: IFTTT triggers, SMS bot, ...
  50. ... html emails, many autodata integrations, clobbered settings, UI icons, google oauth, passwd resets. Upgrades are hard. Cc @beemstat
  51. Changing rate units works again. And fixed last bug w/ IFTTT triggers. We think that's everything from the hairy server upgrade! #bugfix ×2
  52. Finally fixed pagination on the All Data page. Embarrassing how long that was all glitchy! #bugfix & finally a net UVI from the big upgrade
  53. Another thing we broke with the upgrade: Android app stopped automatically staying in sync with the website. Now fixed. #bugfix
  54. Hopefully last UVI for #bugfix's from the upgrade: dial-it-in position, checkmarks for data entered today, saving changes in reminders table