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 2261 days (over 6 years!) and counting...

2011 February

2011 March

OMG Where Did Three Years Of UVIs Go??

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 here while we gradually convert all that and move it to this page so everything is in one place.

2014 June 19+

  1. Custom color palette for graphs means they're like 1/2 the filesize or less (8-bit vs 24-bit, but look identical). Faster, less bandwidth!
  2. If you said like "2300" instead of "23:00" for your deadline, we gave a 500 error instead of politely complaining. #bugfix
  3. Beedroid v2.3.2: "What's new" dialog, faster & less bandwidth, do-less value defaults to prev day, zeno polling past midnight; + 6 bugfixes!
  4. Made the comments field in our Zapier integration more robust -- special characters like accents or emdashes were causing failures. #bugfix
  5. And another critical #bugfix for Zapier goals: Zeno polling was not triggering. Starting now it will!
  6. Mini-UVIs: Added Malcolm Ocean to & "(bee)mind" instead of the apparently confusing "mind" on the frontpage
  7. Zeno poll emails were saying you could reply with data even for autodata goals #bugfix (or #emailcopyfix)
  8. Serious #bugfix w/ certain autodata goals since Oct 27: final midnight check for data was sometimes counting the datapoint for the next day (trello, codeschool, duolingo, github, gmailzero, habitrpg)
  9. Prev #bugfix caused a brief RescueTime bug that was adding duplicate datapoints, now also fixed and cleaned up (and refunds issued). Thx to Ben Trettel and Lawrence Evalyn.
  10. When registering Beeminder API clients we allowed '.' in the app name which caused errors editing the app so now we disallow periods #bugfix [HT: Ryan Kluzak]
  11. There's now a 6-hour akrasia horizon on snoozing your deadline
  12. Brought up to code: pointer to the forum, arbitrary deadlines, deleting goals in the 1st week, and auto-widening
  13. We were ignoring updates to the deauthorize callback URL for registered API clients; now we actually update the field! #bugfix
  14. Made the deadline time under the goal's countdown (above the graph) be a link to deadline setting (& don't do -1 minute thing)
  15. Oldie-but-goodie: Major RunKeeper #bugfix which we broke when we deployed Arbitrary Deadlines (and fixed all the duplicate datapoints)
  16. Rare bug w/ hitting goal date w/ an early deadline causing us to treat it briefly as derailed and trying to recommit. #bugfix HT @samstokes
  17. Another RunKeeper #bugfix: their API gives times relative to user's local time. We were off-by-1 converting activity days for some people.
  18. Terrifyingly Advanced Settings are now less terrifying thanks to lots of new descriptions and mouseovers and links
  19. Mini-UVIs: Added hovertext to fields in Basic Settings; renamed "Inbox Fewer" goal type "Whittle Down"; more obvious that Do More is default
  20. Prettied up and simplified to just be about autodata integrations, not "sign up or sign in with..."
  21. Sleep as Android integration! See also blog announcement.
  22. Sign-in/up initial button selection now matches the view. Thanks Alan Pearce
  23. Fixed display of table of past payments so dates never wrap, since that was hideous, and link to that page from Settings → Payment tab
  24. Android app v2.3.3: better widget creation, somewhat rare but important bugfix w/ date display, other tweaks/fixes; see changelog in the app
  25. Two Sleep As Android bugfixes: don't prematurely show pledge form (on create); fetch since we last saw data, rather than since today #bugfix
  26. Mini-UVIs: Typo in pledge cap settings (HT Yonah Sienna), nice error if Code School user 404s, adapted to a minor change in HabitRPG's API
  27. Critical #bugfix w/ surprisingly few people affected: regex error counted PPRs as active datapoints and the deadman switch wasn't activating
  28. Moved and prettied up the All Data link again since people were still commonly unaware of its existence. PSA: you can edit/export past data!
  29. Tweak or maybe #bugfix with graphs where they’d sometimes show a bit of graph below y=0 despite no part of the road or data being negative
  30. Messed up css for archive/stepdown countdowns (font too large & white-on-gray). Now you can read them. Contrast ftw. #bugfix
  31. Gitminder #bugfix: New “issues closed” goals (since Bethany’s maniac week) counted commits made to the repo instead
  32. Another gitminder #bugfix: On goal creation, javascript validation on the “repo” field didn’t trim, so let you submit blank repo. HT @pbkobold.
  33. Had a bug for 10 days where you couldn’t up from 0 → $5 if you’d added a credit card prior to this UVI #bugfix #metabugfix HT @mhartl
  34. Fixed Fat Cyclist comments which were briefly broken after we changed URLs to end in /weight instead of /fatty (latter still works too tho)
  35. Some improvements to the goal creation wizard, making it more clear what “weekly rate” means, by asking for the units and by adding tooltips
  36. Live from Indie Web Camp: global callback URL in account settings in addition to per-goal callback (handy, eg, for Exobrain)
  37. Also live from Indie Web Camp: Indieauth supports Beeminder! Add your personal URL and it’s shown on your gallery page as a rel=me link
  38. If you had a credit card on file we’d sometimes send you to the payment page instead of the restart page for goals that were frozen. #bugfix HT Lucia Merlo
  39. If you archived all your goals we’d show you the newbee splash page even when you tried to view your archived goals. #bugfix HT Llucille Petersen and Josh McFarland
  40. It was briefly impossible to create new weight & inbox goals (new goal units field was both hidden and required! #bugfix) HT @awarenesss
  41. Tappable tooltips! And goal units now used in y-axis label, and fixed countdown javascript for goal widgets HT Kyle Marek-Spartz
  42. The “Take A Break” feature now also shows you currently scheduled upcoming breaks!
  43. If you have a Beeminder premium plan then Retroratchet lets you make it be an eep day Right Now
  44. We briefly broke goal widgets again when we did this refactoring. Fixed now. #bugfix
  45. Got over our carrot-dangliness paranoia & just say “premium only” for custom goals & configurable retroratchet. Updated too.
  46. Sometimes (rarely) we’d fail to pick up data for newly created RunKeeper goals (eg, if you manually add activities for a prev day) #bugfix
  47. One more #bugfix w/ adding new pledges: we were still making it impossible to add a pledge after un-archiving a successful unpledged goal
  48. We accidentally were making you double-confirm goal deletion until recently (modal popped up & then the javascript “are you sure?” as well)
  49. Retroratchet made things better & less buggy for Do More but mostly made things worse for Do Less. Reverted to old way for Do Less. #bugfix
  50. If you have the Plan Bee or higher premium plan you can now change your goal URLs (careful about breaking links please!)
  51. Goal wizard form validation much nicer: they’re actually next to the field that’s in error. Also units updates in real time, “__ per week”.
  52. Added Alice Monday and Chris Goodman to the About Us page
  53. Guilt-trip email if you stop beeminding and we auto-cancel your subscription, in case you didn’t mean to let that happen
  54. Some time ago Bethany ditched our default avatars, citing ugliness. Today we added a new default avatar. Note the use of negative space.
  55. “Feature me” feature in goal settings adds you to public gallery. Thanks awesome people on Akratics Anonymous.
  56. We were asking for a password on social sign-up (facebook, google, etc) since late April when we refactored sign-up code. Thanks Ryan Moore. #bugfix
  57. Bugfix where we’d sometimes/rarely give a 500 error if you deleted all your recent datapoints and then tried to resume a frozen goal.
  58. Webcopy tweaks, tooltips for things like explaining safety buffer for Do Less goals & auto-canceling subscriptions on
  59. We no longer add Duolingo datapoints if no change from previous day (important so we know if you go MIA so we can flip the deadman switch).
  60. When adding a pledge the first time we were getting the credit card info then failing to actually add the pledge (moneyburning #bugfix).
  61. Vastly slicker form for getting credit card details when you first add a pledge, thanks to Stripe Checkout.
  62. Big changes to freebees and deleting goals! First UVI: We now show number of freebees remaining in the sidebar.
  63. When you delete a goal, we ask you why and if it’s for technical reasons, we give back the freebee.
  64. Scrapped “add a pledge” vs “commit later” (ie, no option to add a pledge when creating a goal — if you have a freebee left you’re using it).
  65. Fancy dynamic text depending on which option you pick in the goal deletion dialog. (This stuff is all spec’d out at
  66. Fixed link to glossary in deletion dialog (and tweaked “why are you deleting this?” webcopy). #bugfix
  67. The popup to confirm you’re on the hook for all goals after adding credit card was too easily dismissable; now mimics [Stripe] Checkout.
  68. Truncated the goal titles and added tooltip about archiving in the “archive any of these active goals you’re not serious about” popup.
  69. Get credit card first (thanks again Stripe), then send the user to unfreeze a goal (improvement over the mixed messages on unfreeze page)…
  70. …which let us simplify the unfreeze page and remove a bunch of text from it (because nobody ever reads on the internet).
  71. We show the text about giving back freebees only if you do or might have freebees remaining; see “deletables” in
  72. Fixed moneyburning lunacy where we used to increment freebees every time you added a pledge so lots of people wouldn’t ever actually run out.
  73. Error handling for failure to save credit card info (not great error handling but it does indicate this to the user now).
  74. Answering the goal deletion dialog generates an email to us (part of which we’re now done tweeting about!).
  75. Removed the needless error checks preventing craziness like aggday=mean for autosumming goals since crazy people like Alex Schell wanted it!
  76. Deadman switch now never treats you as still active if you have an autodata source reporting flatlined data. Same for
  77. Tiny UVI: we now always say, eg, “$5” instead of “$5.0”. We told @slothbear we’d pay him $5.0 if we didn’t fix that by tomorrow. #bugfix
  78. Fixed formatting in the Guilt Trip email (for premium people who go MIA) and made human-friendly phrasing like “Bee Lite every month”.
  79. Letting you start creating a goal before signing up confused people for no real benefit. Now you have to sign up first.
  80. Chinese users can now use Alipay instead of a credit card. (One of many UVIs thanks to Stripe Checkout; cf #7.) UPDATE: Oops, we have to do something more before this is live!
  81. Quickly clicking the +/- buttons in the newbee data form triggered a double-click, highlighting the buttons. Ugly. Thanks True Software Testing. #bugfix
  82. The clickable tooltip thing for the Archive Goal button in settings (as opposed to main graph screen) works now. #bugfix
  83. Deadman #bugfix introduced a bug: Gmailzero needs a datapoint even if count’s unchanged; inbox size more like weight than like eg CodeSchool.
  84. When graph’s stuck generating we no longer throw up our hands like “the server is melting; email support?” & instead give a “try now” button.
  85. Better / less snarky categories for goal deletion reasons: technical reasons (beeminder messed up), confusion, abusing loophole, and other.
  86. The flatlined datapoint is now shown as a rightward-pointing triangle (zoom in to see!).
  87. Also if the official, aggregated datapoint for the day does not have a corresponding actual datapoint (eg, aggday=mean) it’s shown hollow.
  88. Intern Chris’s Twitter integration is live at (and date bug that it had when we first deployed it is now fixed).
  89. Dutch is now supported in Duolingo — Hoezee! — and now you can beemind it — Hoezee^2!
  90. Incorrectly hidden modal on goal page left its ghost “on top of” the settings cog making it unclickable! Thanks Aaron Parecki and Peter Hurford. #bugfix
  91. Time and day of derailment now shown under the countdown timer; another prereq for Generalized Midnight (most are behind the scenes).
  92. Better date picker that lets you select month and year with dropdowns so you neither have to type the date by hand nor click month by month.
  93. The datapoint that counts (like the min for weightloss goals; cf “aggday” setting) is shown bigger than the others; future ones ghostlike.
  94. Errors displayed on graphs no longer overflow on both sides; other tweaks like road starts flush w/ axes, tick marks not covered up by aura.
  95. Introduced a bug where the bull’s eye showed up underneath the YBR, visible since the road was translucent, but ugly. Fixed now. #bugfix
  96. Fixed an (embarrassing, money burning) bug where we retried charges before saving new credit card, thus trying them against old one. #bugfix
  97. We were not handling malformed dates nicely in the road dial and other places. #bugfix (also broken x-min, etc briefly; now fixed as well)
  98. In newbee data form, we now always default to previous datapoint, not zero and especially not the broken thing we used to do for odom goals.
  99. Various RescueTime integration improvements:
    • OMG don’t wait 45 seconds before redirecting to the newly created goal. #bugfix
    • Still do the check for if it’s a productive vs unproductive time goal even if no RescueTime data yet to extrapolate a rate from. #bugfix
    • Show the “we’re importing your RescueTime data, this could take a minute” as soon as the user submits, not after the wait and redirect.
    • Force user to pledge if no freebees left; incidentally also fixes the 404 after creating the RescueTime goal if no freebees left.
  100. We weren’t removing the “hey this goal is frozen because you haven’t added a credit card yet!” banner after you add your credit card. #bugfix
  101. Another #bugfix with email bot parsing, this time with non-ascii / non-standard whitespace from Airmail on OSX. Thanks @deadsunrise.
  102. Our batch of RescueTime improvements introduced a bug for people with unlimited freebees wherein goals were not saved. Thanks Kathy Reid. #bugfix
  103. Previous bugfix for people w/ unlimited freebees briefly borked the goal creation wizard for everyone w/out unlimited freebees. #bugfix
  104. The purple steppy line had a glitch where it would jump to the start of the yellow brick road even if that didn’t make sense. #bugfix
  105. The y-axis now always starts at zero when there’s an initial datapoint of zero. #bugfix & Bonus UVI: a “share your graph on Facebook” button.
  106. Added deadbeat flag to the API output for the user resource.
  107. If we do the “deadbeat” thing to your account because your credit card fails, we now automatically undo it when the automatic retry succeeds.
  108. If third party authentication (eg “sign in w/ Google!”) fails, give an error message when user is returned to Beeminder, instead of 404ing.
  109. When Google’s notification server flakes out (for Android push notifications) we try again in a few seconds. #bugfix (or #robustnessfix)
  110. Android app version 2.3! Goal search interface and fixes/improvements to notifications and other fixes (see changelog in the app for more)
  111. Countdown to derailment defaulted to midnight if graph wasn’t yet generated (or had errors) which was lies. Now just doesn’t show countdown.
  112. We now canonicalize phone numbers when you add them so we can find you again to confirm your number (SMS bot is still US-only unfortunately).
  113. #bugfix w/ editing Twitter goal settings: ignore ‘#’ part of hashtag if user includes it; also consistency in pluralization of “hashtag”.
  114. Introduced a bug that made us fail to increment freebees when goals were deleted for technical reasons; #bugfix’d it, gave back the freebees.
  115. Recent Duolingo updates caused an error for us; #bugfix’d it but currently can’t get your points count if you change your native language.
  116. Small improvements to Duolingo integration: default goal date is +18 months, updates for Irish & Danish, better error. Thanks Jan Bogaerts.
  117. #bugfix like #43 but in the take-a-break tab; & tiny Twitterminder fix: “This data autogenerated from Twitter user .”
  118. Not sure when we broke this or if, G-d forbid, always was this way but when you pick username, trailing spaces weren’t trim’d. Thanks Colin Marc #bugfix
  119. We updated Google oauth recently and it broke sign-in via Google on Android (now getting numeric ids instead of email address). #bugfix
  120. Better table of contents in API documentation.
  121. Slight improvement to weightloss countdown: be explicit about counting down “Time Left until [Wrong Lane] vs [Derailment]”.
  122. Tiny UVIs: Flatlined triangle datapoint always shows up on top of others, & plot width adjusts better for crazy huge numbers on the y-axis.
  123. We added a way to collect basic stats on (specifically weightloss) users. Please update — For Science! (Also #bugfix: you actually can update.)
  124. Was impossible to create a Jawbone goal if no freebees left. Kept sending you to auth jawbone in an infinite loop. Thanks Jana Beck. #bugfix
  125. #bugfix with case-sensitive email comparison in Gitminder (GitHub canonicalizes email addresses but your local git config does not).
  126. API’s “roadall” in the Goal resource lets you make arbitrary changes to the yellow brick road (except not easier between now and + 1 week).
  127. Pledge caps! Instead of just being able to turn on or off auto-increasing pledges you can pre-specify a pledge cap in goal settings.
  128. Legit check email now warns you if you hit your pledge cap and points you to goal settings to change it (cleaned up the copy a bit too)
  129. If you got an error changing advanced settings for Trello or Twitter goal the Trello/Twitter info on the page wd cause a 500 error #bugfix
  130. Dubious improvement except in helping w/ waitlisting by scaring more people off: Beekeeper has additional $256 setup fee
  131. Tweaked webcopy in goal settings for pledge caps and made it point to the new blog post about it (& road dial tweak)
  132. You can now buy 10 freebees (goals that start with $0 pledged) for $1, which we also blogged about
  133. The page that shows you an ewok if you're using an old version of Internet Explorer now points you to
  134. Fixed a bug w/ retrying failed charges too many times; fewer failed charges littering up your pledges #bugfix
  135. Fixed Withings goal creation bug we cause. Now you can create Withings goals again! (yikes) HT @MaybiusStrip
  136. Fixed RunKeeper goal creation bug: we'd let you submit without selecting any type of activity to track, and then we'd crash #bugfix
  137. Put the "Σ" back, showing/explaining about auto-summing. Unrelated, but too small for separate UVI: updated HT Geoff
  138. New Discourse forum: -- Announced here:
  139. For user stats (on weight loss goals) we handle imperial units submitted like 5'6" or 5.5 feet. We drew the line there; no cubits, etc.
  140. User (weightloss) stats #bugfix: fixed a 500 error after submitting if you were updating on an archived goal. (But why would you do that?)
  141. One more (silly) stats #bugfix: if you use inches we were decrementing your waist/height every time you submitted the form. #bestdietever
  142. Another casualty of goal wizard refactoring ... Withings #bugfix w/ new goals: we were also failing to fetch new data for those goals
  143. #bugfix: remember datapoint sort order on delete (previously fixed for edits) and, when changing the sort order, remember page you were on
  144. We added a header to that links to Beeminder. (It's less obtrusive when you scroll; could still use work tho.)
  145. Better images for the contracts on our integrations pages:,,, etc
  146. Do-less goal creation buglets: "Commit to AT MOST" & the (i) after "Set your upper limit..." was wrapping to a new line #bugfix
  147. HabitRPG integration!
  148. HabitRPG integration #bugfix: Negative rates (like for beeminding remaining To-dos) broke the goal creation form.
  149. The API's now robust (moreso, at least) to newlines in comments of datapoints. Turns them into \n's instead of dying. Matters for Zapier...
  150. New Feature and Veritable Paradigm Shift: Arbitrary Deadlines!
  151. Missed a few hardcoded instances of the string "midnight" (our rushed launch of arbitrary deadlines promises to be a fertile UVI source!)
  152. Much nicer logos for autodata integrations. #alice
  153. In arbitrary deadline interface, we made it more clear that deadline is akrasia-proofed & your change is happening in a week, not right now
  154. Tweaks & #bugfix in HabitRPG integration: default to "More To-Dos completed" & don't let you select neither! (& introduced&fixed bug w/ tags)
  155. Important new version of the Beeminder Android app (v2.3.1r2) with bugfixes for arbitrary deadlines.
  156. Android app also now handles different screen sizes, including tablets, better. Nicer visuals, longer list of recent datapoints.
  157. And Android app has better/faster updating of the widgets. And did we mention the arbitrary deadlines bugfixes? There were lots of those! oy
  158. Fixed the create_all call in the API #bugfix. Remaining bugs from the aftermath of arbitrary deadlines in the forum
  159. Fixed the checkmarks in the goal gallery showing if you've entered data that day (they were confused about what "that day" meant) #bugfix
  160. Deadlines are now shown in the goal gallery & on the watermarks of the graphs themselves. So much easier to keep on top of what's due when!
  161. The new watermarks show deadline time if eep day, day of the week of eep day if within 7 days, or number of days till derailment otherwise.
  162. Tweak to our HabitRPG integration: we don't count Challenge To-Dos -- you may now join and leave Challenges with impunity!
  163. And HabitRPG integration #bugfix: were overwriting intermediate datapoints (not wrong but more data = better + needed for odometer feature)
  164. One more #bugfix with HabitRPG integration: goal creation was failing for people who had tasks predating a change to HabitRPG Challenges
  165. When Fitbit switched to ssl-only we updated for existing goals but not for users newly authorizing. Fixed now! #bugfix HT @annafung
  166. Fixed the "no data" error when creating new goals after midnight but before deadline. #bugfix (like the 8th one with arbitrary deadlines)
  167. Default deadline for new goals is now midnight. Tweaked the watermarks to make them more visible. Forum link in footer. Deadline copy tweaks.
  168. Oh and we totally dropped the akrasia-proofing so you can change deadlines willy-nilly. Not sure if improvement but last tweet was 4-in-1...
  169. Fixed autoratchet trigger condition (was maybe pretty much broken since deadlines feature for many people, due to 3am deadline...) #bugfix
  170. If you added a Supporter with a '+' in their email address, we didn't handle it right. #bugfix
  171. Fixed the last critical bug from arbitrary deadlines: dates no longer change when you edit datapoints. #bugfix (forum post)
  172. Just kidding, 1 more important #bugfix w/ arbitrary deadlines: zeno polling wasn't polling after midnight (then broke & fixed it 2 new ways)
  173. Mini UVIs: Higher contrast text in blog section on frontpage; HabitRPG API fields wide enough so the spinny thing won't overlap the text
  174. Hadn't had gzip turned on for "application/json" which means 60% reduction in data usage for the Android & iPhone apps & other API consumers (EDIT: when the apps support it)
  175. We just launched our official Zapier integration, which means 100s of new autodata sources you can beemind! So huge!
  176. Version 3.1 of our iPhone app! Bug fixes with dates, added min to get to each lane of road, goal rate on gallery screen; last update up top
  177. And then BeemiOS version 3.1.1 also fixes a crashing bug for iOS 7 users (sorry!) and adds layout fixes and double-tap to zoom out graph.
  178. We're gradually transitioning from to (link to forum now in site header)
  179. Terrifyingly Advanced Settings now has a "Data source" field, automatically set to Zapier for Zapier-mediated autodata goals. Yay Zapier!
  180. In Gitminder: we now track Creates plus Pushes towards your count (GitHub gives them different event codes, & we'd been excluding Creates)
  181. Arbitrary deadlines #bugfix from a while ago: pessimistic presumptive datapoints sometimes failed to get replaced due to date confusion
  182. In the stats we collect in the sidebar for weightloss, don't bug out if errors in the graph, and don't allow 0 for waist size. #bugfix
  183. We now always send you a reminder even for goals that have errors! #bugfix
  184. Subtle but important bug with reaching goaldate and not refreshing the graph, leading to bugginess trying to restart the goal later. #bugfix
  185. Mini-UVIs: better beekeeper blurb at & fixed /start icon centering (and added Sleep as Android!)
  186. If there was an error submitting credit card info we left the submit button disabled till you refreshed. #bugfix HT Faire Soule-Reeves
  187. We finally actually have a radio button for Do More vs Do Less when creating Rescuetime goals!
  188. Bugfix in Sleep as Android integration where we might've missed the first day's data after goal creation
  189. 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)
  190. Beedroid 2.4! New summary widget (so handy!), Buzzing bee animation (so cute!), Better icons (so modern android!), & no less than 7 bugfixes
  191. For the full list of changes in version 2.4 of the Beeminder Android app: Settings → About Beeminder → ChangeLog [10 UVIs in 2 tweets!]
  192. Another improvement to mention in the Beeminder Android app: replaced webview w/ imageview for graphs, meaning it's faster on slower devices
  193. 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
  194. 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
  195. 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
  196. 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)
  197. Fixed whitespace in bot reminder emails that made format instructions for replying with data needlessly confusing. HT @zooko #mini
  198. "Units" placeholder in goal wizard, refresh the graph after stepping down the pledge, linkify "advanced settings" in recent data. #mini ×3
  199. We were wrongly saying "you've reached your pledge cap" in legit check emails for anyone with a pledge stepdown scheduled. #bugfix
  200. We were accidentally including withings/fitbit bodyfat goals in our weight loss science experiment. #bugfix
  201. 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
  202. Anti-slopeslipping: this = last UVI we'll count ∀ ongoing improvements to Stripe checkout, Discourse forum, etc where we don't lift a finger
  203. 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
  204. Fixed Quick Add whitespace bug (HT @PareidoliaX) which turned out to be idiocy in an undocumented part of our API #bugfix
  205. 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
  206. Beeminder Android app v2.4.1 fixes freezing after goal creation/deletion & sync progress indicator didn't work on some devices. #bugfix ×2
  207. Mini UVIs: Link and hovertext on & added "e.g." to placeholders (people would not notice it was just a placeholder)
  208. 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
  209. Twitter autodata bug: last datapoint traveled forward in time if you hadn't tweeted anything new. HT @gdedkins #bugfix
  210. Reminder time & deadline time accept time of day like "2300" now, & error rather than die on bad input. Related to previous UVI
  211. There can be only one (gmailzero goal)! If you try to create 2nd: warning, redirect to existing one (even if archived) HT Malcolm Ocean
  212. Got rid of the crufty/confusing "reset road at X" datapoint comments in favor of "DERAILED"; tweaked the comment for PPRs too. #mini
  213. Oops, we were saying "DERAILED" for restarted goals. Now meta datapoints are one of {"PESSIMISTIC PRESUMPTION", "RECOMMITTED", "RESTARTED"}.
  214. 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
  215. Mini UVIs: smart submit buttons for integrations, labels clickable for pledge cap radio buttons, wording of "reached pledge cap" #mini ×3
  216. Do some actual input validation on "roadall" in the API. HT @chipmanaged Cf previous UVI
  217. 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
  218. Also could fail to ensure you'd auth'd before creating gitminder goal #bugfix. Also always use fancy landing page layout for goal creation.
  219. 2 mini UVIs: reworded confusing "extend it first before using retroratchet", added warning re start dates for scheduled breaks. HT @aaronpk
  220. Reminder email was missing link to the goal for goals manually marked as autodata; also has more goals & sorts better
  221. Ongoing heroic JS refactoring continues to break things. Do More goals created after Odometer goals had spurious initial datapoints #bugfix
  222. Beeminder is very proud to be one of a handful of launch partners for the new @Epson #quantifiedself wearables:
  223. We were preemptively trying to create your Withings goal, causing a spurious "couldn't save goal" error immediately after sign-in #bugfix
  224. 3 #mini UVIs: added hovertext for Buzz on front page, improved it for integrations, added username to subject of account confirmation emails
  225. Epson: Fixed date issues that could cause missed activities, time zone issue, & aggregating multiple datapoints for a single day. #bugfix ×3
  226. 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
  227. Fixed a passel of glitches with Sleep as Android auth (via Google), confusion with previously issued keys and expiring tokens. #bugfix
  228. Added API documentation for rah, delta, callback_url, description, graphsum, lanewidth, deadline, plotall, etc. HT @instigate_it
  229. Two things in landing pages: consistently hide goal form when showing pledge info, and opaque overlay when showing infinibee. #bugfix ×2
  230. Mini UVIs: typo fixes in hovertext in settings, fix checkmark symbol in api docs, pruned testimonials, copyright year thing. #mini ×4
  231. 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
  232. Much prettier auth page with simple green vs red buttons to confirm/reject. (When you authorize a 3rd-party app; cf
  233. If you weaselproof yourself you can no longer edit data or add it via the email bot for autodata goals. #closingloopholes HT @joeymac1981
  234. In graph hovertext, bot emails, etc, safety buffer now refers to approximate number of days till derailment, not confusingly that minus one
  235. Consistent grammar/orthography ("beeswax", "e.g., foo" not "e.g. foo", "~N days until" in retroratchet), iOS favicon. HT Nick Head #mini ×4
  236. 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
  237. Roadall #bugfix (2 of 3): Discontinuities in the road weren't handled right, led to rejection of road changes that should've been allowed
  238. Roadall #bugfix (3 of 3): Floating point comparison bug: rejected resubmission of unchanged road matrices! HT @instigate_it @chipmanaged
  239. Moved list of 3rd party apps you've authorized to access your beeswax (Beeminder data) into user settings so it's actually discoverable now
  240. Also linked and and to each other. HT @Malcolm_Ocean
  241. Finally there's a button to regenerate your personal auth token in the advanced account settings page (where we show it to you)
  242. A new aggday type: triangle. Described in a forum thread. Huge HT @DRMacIver.
  243. From Jan 30 to Feb 26 HabitRPG goal creation gave cryptic errors in place of graph image at first (tho goal got created) #bugfix
  244. Explanatory text and visual improvements in HT @instigate_it who's been a huge help with API hacking lately.
  245. 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
  246. 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
  247. Important #bugfix in drawing the graph after a derailment where it could fail to flatline past the derail day
  248. 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
  249. 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!)
  250. Subject lines of legit check emails are now like "paying $X, now pledging $Y on bob/foo: beeminder legitimacy check" (key info up front)
  251. Fixed the Epson "this data is autogenerated" link: now specifies whether you created goal with Pulsense vs Runsense #mini
  252. Discovered we were silently failing on Fitbit oauth errors: now puts up a banner letting you know what's up. #bugfix
  253. Made the API's create_all call (for adding datapoints) a bit more robust/accepting, as Bee explains
  254. 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"
  255. Tweaked legit check copy ("Any other technicalities or even just confusion about the rules?" and PS about pledge stepdown) #mini
  256. Beeminder launches official Garmin integration!
  257. Fixed bugs w/ watermarks on graph thumbnails, and maybe now they're bigger and so more readable from the thumbnails (forum post)
  258. Mini UVIs: Another aggday function: count; copy tweak for reminder settings; new robots.txt (not that human users should care) #mini ×3
  259. Use user's timezone in comment 'Auto-entered by Garmin at TIME' & fixed link by recent data "this data is autogenerated by ..." #mini ×2
  260. Updated a banner from "email settings updated" to just "reminder settings updated" cuz you can update sms reminders there too #mini
  261. Had a bug with sometimes missing data from Garmin's pushed data. Now periodically check for missed data #bugfix HT Jana Beck
  262. 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
  263. Our timezone info was out of date (eg, Moscow stopped summertime sometime recentlyish); updated the tzinfo gem for latest timezones. #mini
  264. 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]
  265. Our Jawbone goal wizard said "pounds" when in fact weight data from Jawbone seems to be only KGs #bugfix forum
  266. Half (or more) of scroll-to-locations in autodata landing pages weren't scroll-to-ing (draftin, codeschool, trello). #bugfix
  267. Broke and then fixed the confirmation emails for new users signing up. #mini #bugfix (a net-zero UVI but it counts! (related to Science!))
  268. New advanced setting to hide y-axis numbers, like if you want to share your weight loss progress but not your weight forum
  269. was breaking if someone with no datapoints added themselves #bugfix #mini
  270. form was not redirecting back to the landing page after authenticating #bugfix
  271. Email bot reminders for goals w/ data fed from our Epson integration now are specific to the kind of goal (running/steps/sleep) #mini
  272. Added Garmin to the front page and added links to the landing page. #mini
  273. We were showing the "you really should add a credit card" banner thing when not logged in. HT @DRMacIver and @chipmanaged #mini #bugfix
  274. There was an error in Epson sleep goals causing us to double-count time (in Epson's API, end dates are inclusive) #bugfix
  275. 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
  276. The API now supports upsert. Set upsert=true (and include a requestid) for create datapoint, and it creates or updates. HT Malcolm Ocean
  277. Now upsert works without needing an "upsert" parameter. Way better. POST a datapoint w/ requestid, it returns CREATED, UPDATED, or DUPLICATE
  278. Gmailzero goals no longer do the hideous hack of adding a dummy datapoint for yesterday to make the start of the road stay put
  279. More prettying/concising of the "allow this app to access your beeswax" page [previous UVI] and blog post authors back on front page
  280. 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
  281. When a goal that's counting down to being archived derails, we were incorrectly saying "paying/repledging" in the legit check. #bugfix
  282. 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
  283. Also in Beeminder iOS app 3.2: Robuster push notifications (robust to device token expiration or connection flakeout) + other bug fixes
  284. Documented upsert in and made a best-of collection of Beeminder blog posts:
  285. Blurb below Allow/Cancel buttons: "We call this 'accessing your beeswax'. You can revoke access any time in Settings → Apps [link/tooltip]."
  286. Now allow new GmailZero goal if old is archived. Fixed unique slug error. Missing error messages on GmailZero landing page. HT @carlcoryell
  287. Rare bug w/ autoratchet=0 & goal end date: we ratcheted w/out checking end date, yielding enddate++ every day. #bugfix HT @chipmanaged
  288. Related #bugfix: rare infinite loop trying to recommit you when ending a goal in the red (added explicit check for "goal recommitable?")
  289. API #bugfix: requestids should only be checked for uniqueness within the goal, not all the user's goals. HT Malcolm Ocean
  290. Mini UVIs: typo fix in API docs (reqeustid) + upsert works for create_all now as well. #mini ×2 HT Malcolm Ocean
  291. Timestamp for datapoint POST now defaults to Now, OR whatever the existing timestamp is, if it's being updated. HT Malcolm Ocean yet again
  292. Transition to OAuth2 for GmailZero! (Alert in bot emails to re-auth, new goals now use oauth2 (not sketchy "this is unsupported" oauth1))
  293. 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
  294. Show the actual email address that you're authed with again at #bugfix related to the GmailZero OAuth1→2 transition
  295. GmailZero OAuth1 is now dead! Added error banner if no OAuth2; include "reauthorize us" alert in GmailZero zenos (in addition to reminders)
  296. The "Are you sure you want to remove this service option?" in didn't let you actually cancel! #bugfix HT Sean Fellows
  297. Fixed dates in datapoint export: off-by-1 in some instances because we weren't using new daystamp from Arbitrary Deadlines refactor #bugfix
  298. One more GmailZero OAuth #bugfix: handful of people got a 500 error trying to reauthorize (stuff with expiring/revoking/refreshing tokens)
  299. 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)
  300. Garmin (& IFTTT) autodata pushes were failing if their JSON had non-ascii characters. #bugfix Also an infrahancement [infra]
  301. More GmailZero #bugfix's: failed to add a datapoint if 0 messages, failed to handle pagination & count more than 100 threads
  302. Now simpler to beemind multiple languages on Duolingo: we retry and wait 3 days before giving up if no points found for your language
  303. Copyediting pass through the API docs: mention idempotency, better/clearer links, tighter prose, cuteness, etc.
  304. GmailZero counts the min of the day but we now show, in the comment of the last datapoint, the actual last count fetched. Demystifying!
  305. A GmailZero improvement so momentous we blogged about it: beemind arbitrary queries!
  306. 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.
  307. Seeming bug in Gmail's API returning spurious empty messages that we're working around now by disregarding. So less overcounting. #bugfix
  308. 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)
  309. FEATURE: Added "Total Calories Eaten" to the things you can beemind with Fitbit
  310. 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?]
  311. OLDIE: Zapier button + regular refresh button for Zapier goals to run your Zap manually when working down to the wire (also better tooltip)
  312. FEATURE: You can now create multiple GmailZero goals (for the same Gmail account). Just name each goal you create at
  313. Announcement! Beeminder is an official IFTTT Channel! So many things to automatically beemind...
  314. Fancy landing page for our IFTTT Channel at (and did we mention we published 57 Recipes that use Beeminder?)
  315. 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
  316. 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
  317. Rearranged autodata integration icons on the front page, added IFTTT (still catching breath from the launch, which was like 57 UVIs in 1!) #mini
  318. In Trello integration, use latest datapoint, not a 0 when we can't reach Trello's API, otherwise you get unwanted odometer reset. #bugfix
  319. Fixed 500 error in API when no goal provided. #bugfix (first verify parameters, *then* find the goal!) See previous infrahancement
  320. FEATURE: Under the thumbnails in the gallery we now show how much is due, not just when
  321. Relatedly, the Quick Add box now actually causes the amounts under the thumbnail to update immediately. (forum discussion) #bugfix
  322. 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
  323. 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
  324. 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
  325. Macros you can use in IFTTT recipes to turn not-strictly-numeric Ingredients to beemindable numbers (forum discussion) (eg time-of-day)
  326. Mini UVI: Now truncate instead of wrap long usernames in (keeps them all nice and neat and uniform size)
  327. We added swimming as an activity to beemind in our RunKeeper integration. HT Emilie Lostis
  328. We did this a long time ago (buzzing infinibee UVI) then partially broke it. Should now consistently time out. #bugfix
  329. 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
  330. We missed cases of notifying you on missing goals, namely @IFTTT Recipe triggering on beemergency or safe days on a specific goal #bugfix
  331. Our IFTTT macros can now be nested! (forum discussion)
  332. Mini UVIs: don't try to pluralize the goal units in the default y-axis string, fixed broken link in #mini ×2
  333. 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
  334. Official Misfit integration! Our blog post here: -- and look at us in their partner gallery:
  335. Misfit integration features: beemind amount of sleep or steps. Option to import last month's worth of data when you create the goal.
  336. Finally, we use Misfit's push API so Beeminder updates your graph (roughly) as soon you sync your Shine/Flash
  337. 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)
  338. Goals w/ deadline after midnight would wind up w/ datapoints off-by-one-day if you re-scaled them (bottom of advanced settings) #bugfix
  339. 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
  340. Now the hard cap / bare min numbers show *both* deltas and absolutes; this is kind of terrible but better than previous mess we made
  341. Small improvement to iOS EEP alerts: "+X due by DEADLINE" (was "by end of day" but that's changeable)
  342. Added a helpful table of upcoming week's worth of Bare Mins (or Hard Caps) to the sidebar of your goal!
  343. 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
  344. 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
  345. Official Skritter integration!
  346. Made hard cap / bare min numbers and the table in the sidebar update live when you add new data
  347. 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
  348. 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
  349. 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
  350. 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)
  351. Medley of other UVIs with traffic light and table: better heading, say "hard cap" when apropos, deltas on mouseover, other bugfixes, tweaks
  352. 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!
  353. Fixed bug in previous "confusing" bugfix that monotonized the table values the wrong way so all upcoming Due Less hard caps were identical
  354. 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
  355. 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
  356. 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)
  357. 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
  358. Broke Duolingo integration last night working on custom deadlines! Fixed it this morn (and fixed spurious derails; thx for the forbearance!)
  359. 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.
  360. Our Skritter form -- -- is now consistent that the metric is *time* studied, not points. #mini
  361. #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
  362. Helpful onboarding widget for newbees! (So you veterans won't see it and only half of newbees will, because bucket-testing) HT @useronboard
  363. 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.
  364. Fixed Duolingo redirect (was sending you from Duolingo signup to yr goals after sign-in/up). Also nicely jumps down to the "Ready?" anchor.
  365. Placeholders use "e.g.," everywhere, or in some cases are just sufficiently bossy as to not be confused with actual data
  366. 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
  367. Minor #bugfix w/ default y-axis label: lost units when we fixed this pluralization thing. HT @instigate_it
  368. 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.
  369. 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
  370. 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
  371. Beeminder iPhone app now shows the amount needed to get an extra day of safety buffer if you're already in the green
  372. Beeminder iPhone app has multi-column landscape view on iPhone 6 and iPad, and lets you sign in w/ your Google account
  373. Beeminder iPhone app (4.0) now updates the goal in the gallery immediately after updating the graph
  374. Beeminder iPhone app has redesigned data entry fields to help ensure correct formatting and are generally easier to use
  375. Beeminder iPhone app now correctly handles renamed goal slugs; and handles entering data on keyboards w/ radix "," instead of "." #bugfix ×2
  376. 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
  377. Imported data on new RescueTime goals now viewable if you adjust x-min to be before the import date (previously was imported but invisible)
  378. Added a link to IFTTT integration on and made the links to integrations not open in new tabs (no target=blank)
  379. Our RescueTime integration was giving the safety buffer option, but ignoring your pick in the case of do-less goals #bugfix
  380. Rare bug in odometer goals was triggered when day before derail had multiple datapoints; were picking wrong value for resetting road #bugfix
  381. New ratelimit-specific error email for IFTTT goals adding too much data. Were sending a generic "bad datapoint" email, which was confusing.
  382. Beeminder iPhone app v4.1 fixes, we believe, the disappearing goals bug but may have to delete and reinstall (another bugfix version coming!)
  383. We were double-counting certain closed issues in Gitminder #bugfix (ie, issues closed betw midnight and autodata fetch shortly after midnight)
  384. If there was an auth error with your GmailZero token, we were only adding a 0 datapoint, not telling you it's broken. #bugfix
  385. 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
  386. New stat in the Stats box in sidebar of goal page: "90% Variance" which is actually a 90% quantile on... well, see
  387. Night Owls, you can now customize deadlines for Duolingo goals. Thanks @wycats for keeping on us this whole time! (We clearly need that.)
  388. Oops, inverted which deadlines can be set, which can't #bugfix + We're now consistent in referring to "derailing" rather than "losing" #mini
  389. 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.
  390. 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
  391. Second RescueTime improvement: Sub-category minding! Some middle ground btwn minding a specific app and, eg, the entire "Business" category.
  392. Our Jawbone goal creation wasn't giving you the option for an initial week of safety buffer. #bugfix
  393. Long overdue cleanup of our page; mainly adding Support Czar, Chelsea Miller.
  394. The email bot now gives proper threaded replies when you email data to it! (Churning through prereqs for our big reminders revamp...)
  395. 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!
  396. 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
  397. 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
  398. A bug in some "proper replies" was causing mailgun to retry messages it thought had failed, causing us to add duplicate datapoints. #bugfix
  399. Our TagTime integration now understands Beeminder deadlines! (Our TagTime integration is, however, still kludgetastic, involving perl+xterms)
  400. 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
  401. Added the goal attribute "fullroad" to the API (Plus documentation fixes like list of "skinny" attributes)
  402. Workaround ("try refreshing page") for retroratchet not noticing new data added; base "90% variance" only on data since YBR start. #mini ×2
  403. We now retry GmailZero, RunKeeper autodata fetches if they time out; Prepended [initday,initval,0] row to "fullroad" (API) HT @instigate_it
  404. We put user-initiated autodata fetches on a higher priority queue, and less infinibee buzzing for background autodata fetches
  405. 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)
  406. Added "yaxis" and "nomercy" to the API. Also fixed asterisks accidentally getting interpreted as markdown on
  407. 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)
  408. New warning when scheduling a break: "You have Pessimistic Presumptive Reports turned on for this Do Less goal. Careful they don't..."
  409. Configurable Retroratchet is now free! (Existing Bee Lite subscribers, we'll email you tomorrow about this and another change to Bee Lite.)
  410. Oldie: IFTTT error emails were missing the name of the goal in error (not applicable to 'any goal' type triggers) #mini #bugfix
  411. The goal progress box in the sidebar is now collapsible, with the Archive button above it instead of inside it. #mini HT Justin Kwok
  412. Fixed the bug in the API that made the Goal's "datapoints" parameter expect the string "true" instead of the JSON boolean true. #bugfix
  413. Our Garmin integration was failing on manual activities w/ no distance specified (for goals tracking distance) #bugfix
  414. 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
  415. Our IFTTT datapoint-added trigger sometimes triggered multiple times for same datapoint. #bugfix w/ updating flag for when we last checked
  416. "Multisport" activities from Garmin were causing duplicate distances to be logged so now we ignore those. HT @notspelledright #bugfix
  417. We messed up grandfathering certain SMS users such that they couldn't update their user info at all (eg, changing a password) #bugfix
  418. 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
  419. 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
  420. 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
  421. Another #bugfix: if you tried to submit bad data in quick-add and *then* tried to navigate away, the warning would fail to happen
  422. 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
  423. 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
  424. 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
  425. Were accidentally requesting non-https version of useronboard widget which caused warnings, plus conditionally include it cuz faster #bugfix
  426. Beeminder now uses Habitica's new name and logo! (Previously HabitRPG) Special thanks to @lady_alys
  427. API now gives permissions error if you try to change the slug (premium only) instead of silent failure #bugfix HT Chris of
  428. Changed the subject lines for zeno polling emails to give the deadline instead of "in 0 days"
  429. Added a warning and disabled rescaling of graphs with automatic data sources (can't rescale the graph without rescaling incoming data!)
  430. Fixed broken images after HabitRPG→Habitica transition. Also updated API docs to mention the daystamp attribute of the Datapoint resource.
  431. Weaselproofed goals now also don't let you change their data source back to manual. People complained about us letting them weasel that way.
  432. Yesterday's UVI broke the workaround for changing deadlines on IFTTT/Zapier goals so we fixed that. You can change IFTTT/Zap deadlines now.
  433. Scootched the gryffin closer in Habitica logo to make collage work. Added daystamps to all Datapoint examples in #mini ×2
  434. 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
  435. Deadlines can now be as early as 7am! And added explanation to hopefully mitigate confusion regarding earlybird vs nightowl deadlines.
  436. RunKeeper goals can now have arbitrary deadlines!
  437. Added new FAQ item about Rarely Asked Questions, with lots of links to "Beeminder around the internet". #mini
  438. 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)
  439. 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
  440. Fixed help text tooltip for "Due By / Hard Cap By" table to tailor it for the case of Do Less goals. HT David Storrs
  441. We were sometimes getting the date wrong for Duolingo data with non-midnight deadlines when fetched via Beeminder's refresh button. #bugfix
  442. Improvements to like better links, hovertext, explanation of derailment in "How Beeminder works" HT Bill Adams
  443. Hitting Beeminder's refresh button right after midnight no longer derails you if a fetch from the previous day's still queued up. #bugfix
  444. 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
  445. We now support arbitrary deadlines for Code School goals!
  446. Added more tooltips in Terrifyingly Advanced Settings. Unclear whether the terror level went up or down. #mini
  447. Added new Q's to (blog stuff, integrations) and link to and fixed syntax errors w/ other links
  448. New IFTTT macro for recipes that send data to Beeminder: PROD[] (as in product, as in multiplying) (more on the forum
  449. We now support arbitrary deadlines for Trello goals!
  450. We now support arbitrary deadlines for Withings goals!
  451. 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
  452. 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
  453. Moved rate units to basic settings and exposed goal units there (now that we actually use goal units for something)
  454. 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
  455. Archiving now happens at the min of {Akrasia horizon, Goal date}. Which also means insta-archive for completed (but not frozen) goals.
  456. If you derail on the day that your goal is scheduled to archive, the archiving now always happens first (actually just midnight prev night)
  457. Reminders Revamp! Huge simplification of reminder settings. Each goal has 3 relevant settings: zeno start time, days lead time, deadline
  458. 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
  459. 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)
  460. Reminders Revamp 4 of N: Global defaults for reminder settings! And for each goal you can choose to inherit from defaults or not
  461. Sort of part of the reminders revamp: we also now have global defaults for pledge cap and for whether to do no-mercy derailments
  462. 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)
  463. 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
  464. Now using html emails for the alerts (though we're barely taking advantage: links instead of raw URLs, bullets) Also: bugfixes w/ email body
  465. 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
  466. Reminders Revamp 7 of N: Single setting for SMS vs email (premium only) means less confusion w/ enabling SMS for each goal
  467. Reminders Revamp 8 of N: The SMS bot now does zeno polling (premium only; grandfathered original SMS users from before we announced this)
  468. 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).
  469. Important #bugfix for weightloss/inbox goals where zeno polling would fail to happen if you moved into the red after zeno start time
  470. 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
  471. Reminders Revamp 10 of N: Zeno SMS messages now tell you the number of hours left to your deadline
  472. Autodata vs manual goal reminders had "reply w/ new data" in the subject backwards #bugfix (and briefly broke the "N hours" in subject lines)
  473. Doh, the defaults weren't getting applied to new goals (was using default defaults instead of adjusted defaults) #bugfix in reminders revamp
  474. Bug introduced w/ Withings arbitrary deadlines prevented goals from automatically refreshing after getting new data pushed. #bugfix
  475. Introduced a bug with reminders revamp that made us send you to settings after hitting Retroratchet. Now fixed. #bugfix
  476. Mini UVIs: made Unsubscribe All button red, better description of SMS perq on premium page, days lead time now enforces range [-1,30]
  477. One more mini UVI: changed name of tab from "Email" to "Default Settings" since it's not just email anymore (still poorly organized tho!)
  478. 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
  479. Added lifecycle email for newly created goals since reminders revamp means no alerts by default till it's a beemergency
  480. 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
  481. Zeno subject line included 'respond w/ data' for autodata goals instead of manual, and vice versa. #bugfix Also added time to derail to body
  482. The range for default deadline was (for a while) still enforcing noon-6am after individual deadlines allowed 7am-6am. #bugfix
  483. 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]
  484. 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
  485. 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.
  486. If you deauthorized Beeminder from Jawbone or something else went wrong we were failing silently instead of throwing up the alert. #bugfix
  487. Rare bug (manifested if autodata push failed and had to poll Withings) with not fetching data prior to a "RECOMMITTED" datapoint. #bugfix
  488. We're now robust to adding stupidly large values like 999999999999999999999999999999999999999999 that used to make everything break. #bugfix
  489. Broke Skritter goal creation: Skritterland requires 4am end-of-day which didn't play nice w/ new default deadlines. #bugfix
  490. Fixed a rare problem with adding duplicate datapoints submitted by email (related to email retries). Now check message ID to de-dup. #bugfix
  491. 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)
  492. Renamed defaults tab to 'Reminders/Defaults', rearranged/edited "new goal" email copy, tooltip for "-1" in indiv. alert settings #mini ×3
  493. Added leadtime and alertstart to the API -- (Thx Andy Brett; & this portends big reminders improvement on iOS!)
  494. 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)
  495. We were sometimes/rarely double counting Sleep as Android time; now disallowing records on same day with same start time. #bugfix
  496. 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.
  497. Changing goal units made Runkeeper goals stop updating. That was super dumb. But we fixed it! Update gunits to heart's delight. #bugfix
  498. 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
  499. Were failing to regenerate graphs and tell the Android app about changes to deadlines immediately which got goals into weird states. #bugfix
  500. After upgrading from literally the oldest documented version of the Stripe API (from 2011) we broke & then fixed our payment UI. #bugfix
  501. If you had multiple IFTTT recipes triggering for the same Add Datapoint event, only one would actually trigger. #bugfix See forum discussion
  502. New IFTTT macro for counting words in Trigger Ingredients: WORDCOUNT[] See forum discussion
  503. Tweaks to bot emails (pre-vs-ul, link, next check), CSS in blog header (HT Malcolm Ocean), alignment w/ Misfit on
  504. By popular demand, a similar IFTTT macro, CHARCOUNT[], for Japanese and Chinese language learners
  505. Another improvement to the API that was needed for the iOS app: can now query and set use_defaults (grep for it at
  506. We were originally regenerating all your graphs that use defaults when you changed anything; now doing that smarter / more conservatively
  507. New aggday method "nonzero" for plotting a 1 only if there exist any non-zero datapoints. documentation of aggday methods
  508. Creating a goal via API w/ coordinates of road start specified (1st row of roadall) works as expected now. HT Malcolm Ocean and Complice
  509. Beeminder Android app version 2.5! Checkmarks on widgets showing data already entered for the day, visual indicator for unsync'd data, ...
  510. Beedroid 2/9: Now locally buffers datapoint deletions and updates in case you have a flaky connection. And fixes related to stale data.
  511. Beedroid 3/9: The Beeminder icon on the urgent goals widget launches the app. (This is from version 2.4.3)
  512. 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
  513. Beedroid 5/9: Fixes with eep day notifications, Tasker, and TagTime notifications, decreased unnecessary server hits on syncing
  514. Beedroid 6/9: Bugfix with stale goals hanging around, and fixed various rare(ish?) crashes
  515. Beedroid 7/9: Bugfixes with notifications near goal date, proper updates of existing notifications. (This is from version 2.4.2)
  516. Beedroid 8/9: Fixed a race condition with summary widget, weaselproofing of autodata goal (no more loophole of manual editing in app)
  517. Beedroid 9/9: Eliminated road dial (kind of a negative UVI but we crammed a gazillion real ones in these 9 tweets so...)
  518. Clarifying text on tabs for dialing/ratcheting road; also a warning about ratcheting to an eep day if you derailed yesterday. #mini ×2
  519. Ratcheting for do-less goals (including autoratcheting for premium folks) now work in terms of goal units, not days. HT @chipmanaged
  520. 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)
  521. BeemiOS does zeno polling! Adjust individual and default notification settings in-app (known bug: can't change deadline on an eep day) (2/7)
  522. 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)
  523. BeemiOS: The reload button on the goal screen triggers a refresh of autodata. (4/7)
  524. BeemiOS: Fixed the dreaded spinner bug. And Arabic numerals (the real ones, not the western-derived ones) were broken. #bugfix ×2 (5/7)
  525. BeemiOS: Added a ":" button to allow for data input in HH:MM format (6/7)
  526. 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
  55. We rearranged goal settings a bit, moving things betw Basic & Advanced (was a while ago; we're improving @bmndr faster thn we cn twt abt it)
  56. Mini-UVIs: Typo fix ("was as least one error"), stick to "reminders" vs "alerts", "team" copy for Slack, tooltip misplaced HT @chriswaterguy
  57. New dashboard! It's still in flux and not the default view yet but it's available at (tweetstorm to follow!)
  58. Many improvements to the dashboard since it went live, like checkmarks for added data, which we'll pack into 8 UVI tweets tho really over 20
  59. Dashboard has itty-bitty thumbnail of graph, countdown format remembers your pref, integers like 1 not 1.0, safe days for do-less, …
  60. … widen the dashboard so it fits comments, myriad tweaks like right-aligning $-amounts & fixing padding, tab index #bugfix (twice), …
  61. … remove comment after submission, bugfix w/ no goals in gallery, last datapoint timestamp on hover over checkmark or lack thereof, …
  62. … submit button as tab index, put link to dashboard above Quick Add, last comment as placeholder text, #bugfix w/ "fetch data" button, …
  63. … #bugfix w/ showing the previous datapoint comment as placeholder text: now shows previous comment unless it's the "initial datapoint" one.
  64. And that's just the UVIs since we linked to it in the UI, not everything discussed in the forum like sorting, ellipses, etc
  65. Android app was taking too long to notice when graph was done refreshing. (Long story with long queues.) Now much snappier! HT @faireness
  66. #bugfix w/ RescueTime for about 4 days around Feb 25: new goals were created fine but weren't importing your RescueTime history like usual
  67. The graph now shows odometer resets as black vertical dotted lines
  68. SMS choice in reminder settings failing to stick; we broke & /home/featured legacy alias. #bugfix ×2 HT @chipmanaged
  69. We also added "Featured" to the navbar (links at the top of every Beeminder page) & put "feature me" back in Basic Settings. HT @SayHiNeil
  70. Criteria for inclusion in now: 28 most recently updated active undeadbeated goals (that opted in to being featured)
  71. Way faster load time for /featured. Ok that's kinda part of prev UVI so we'll add: fixed wrapping on beemail settings for non-premium people
  72. Yet another thing we broke in the big Mongoid upgrade: auto-detection of timezone for new users signing up. #bugfix
  73. Some people had so many odometer resets that all the dotted lines looked hideous. Now they're more subtle. #mini
  74. Bug with DB queries/indices/caching was making unusably slow (yes, related to Mongoid upgrade again). #bugfix
  75. Stopped timing out when Garmin pushes a big chunk of data to us, which was causing big delays in Garmin graphs getting updated. #bugfix
  76. Rearranged navbar, changed "sign in" to "log in" everywhere (too easy to confuse "sign in"/"sign up"), updated/added hovertexts on links
  77. Months ago we introduced a subtle bug in Take-A-Break that made it silently fail if you manually typed dates that weren't allowed. #bugfix
  78. Beeminder used to hang for many seconds whenever we deployed code. Ponied up for Passenger Enterprise w/ rolling restarts so now it doesn't!
  79. New goal creation wizard! So many improvements! Starting at the beginning: the initial page is more compact, eg, Zapier on own page (1 of 9)
  80. Better UI for picking goalname aka goal slug (deemphasizing goal title etc now since that's in flux) (2 of 9)
  81. The UI for picking the rate to commit to now lets you choose daily/weekly/monthly without going to settings after the fact (3 of 9)
  82. You can now choose both the initial pledge and the pledge cap as part of goal creation (4 of 9)
  83. Instead of just choosing whether to have a week of initial flat spot, you can choose any number of days of safety buffer (5 of 9)
  84. After the goal's created you land on a goal configuration screen w/ all the settings we think you should review for new goals (6 of 9)
  85. Most exciting part: No longer any limit on how many goals can start at the $0 pledge level. Concept of "freebees" is obsolete! (7 of 9)
  86. Instead, we now impose limit on how many goals you can create before required to add credit card (commitment-wall, not paywall) (8 of 9)
  87. Edited and the glossary and old blog post about freebees and various places in the UI referring to freebees (9 of 9)
  88. Fixed the blue-on-black text in the "credible threat" banner, removed horrendous text shadow for popups #mini ×2
  89. #bugfix w/ auto-adjusted copy in goal deletion dialog depending on if you already added credit card (used to be freebee-related)
  90. A bunch of tweaks, copyedits, and more detail on (our Zapier landing page, aka
  91. Added "private goal" & "public data" settings to goal creation wizard. Minimizing surprises about what's public by default!
  92. When you enable iOS notifications in the app we now (actually as of a few weeks ago) turn it on in the web interface too #savedyouaclick
  93. We made a much prettier landing page for our Fitbit integration, more like other more recent autodata integrations:
  94. Not just aesthetic improvements to our Fitbit landing page: the goal creation UI is better, pre-fills sensible choices for goalname & rate
  95. Mongoid upgrade broke the "re-scale your graph" feature in kinda insidious way (now #bugfix'd & manually cleaned up data of those affected)
  96. From Feb 23 - Mar 30 we silently failed to save all attempts to weaselproof oneself! Serious #bugfix (so sorry; please check the box again!)
  97. We finally got the stupid "/goals/" out of everyone's URLs which was making one of the cofounders twitch for the last 5 years
  98. We now show an actual helpful error if you (accidentally?) revoke Beeminder's access to your RescueTime data. #bugfix
  99. Pretty delete button w/ feedback/confirmation popup works in Settings same as graph page now. Bonus UVI(s): fixing autodata goal creation.
  100. Several dashboard tweaks/fixes like bigger thumbnail of graph (on left now) and added link to dashboard in top navbar
  101. Nicer interaction w/ the "Beeminder can't be a credible threat till you add a credit card" banner, & only show it once email is confirmed
  102. We now include a list of Things You Should Know about beeminding on the empty dashboard/gallery page, similar to the commitwall webcopy
  103. Lots of changes to the popup that warns you that by adding a credit card you're on the hook for everything eg links to adjust existing goals
  104. Updates to (where to find example goals, point to Life category in forum, broken link to TagTime Minder)
  105. Changed legit check email copy to point out you can drop the pledge, dial the road, or archive from the goal page (w/ another link to it)
  106. 1/ Myriad tweaks/fixes/improvements to new goal creation: not allowing zero rates (or negative for do-less), css tweaks, better hovertexts,
  107. 2/ disallow initial pledge > pledge cap & inconsistent private/public combinations, #bugfix w/ updating the button text based on pledge,
  108. 3/ actually saving your choice of rate units & some other fields (#bugfix), prompt for credit card when shortcircuiting from $0,
  109. 4/ #bugfix w/ showing "commit to" vs "limit" label (HT Brent Yorgey), redirect to goal page after setup, nicer errors for bad goalnames,
  110. 5/ replaced "start now" checkbox w/ just a field to fill in for how much initial safety buffer & #bugfix w/ specifying it for weightloss,
  111. 6/ added link to go back & change goal type from 2nd screen of goal wizard, #bugfix w/ reusing goalnames of deleted goals
  112. 7/ That was at least 16 UVIs which we're counting as 6 (now 7). You're welcome. It's our penance for getting so far behind!
  113. Slightly obscure #bugfix with Supporters: error if the supporter tried to follow confirmation link for a goal that no longer existed
  114. Slack's icon was missing if you added it on #bugfix
  115. Fixed spurious warning on 1st press of "fetch data" in dashboard #bugfix But another dashboard bug still at large
  116. Added a delete button for apps you create at (HT Uluc Saranli) But still haven't gotten to our byebyebee spec
  117. Additional #bugfix's related to cleaning up the /goals/ in old URLs, like thumbnail of graphs pointing to wrong version of the image
  118. There was an obscure Gmail error ("delgation denied") that we silently failed on with GmailZero. Now we actually tell you about it. #bugfix
  119. Embarrassing: We learned that signing up with Twitter had been broken since like February. Finally fixed as of a week or so ago! #bugfix
  120. Curly (non-ascii) quotes no longer break the SMS bot! #bugfix HT @chipmanaged
  121. Initial safety buffer setting now more... true (and we say "days until derailing" not "days of safety buffer" to reduce the ambiguity)
  122. New feature! If you weaselproof a goal you can no longer delete it in the first week! HT @chipmanaged (again)
  123. Fixed 2 grievous bugs w/ our IFTTT triggers: (1) "datapoint added" triggers now always trigger exactly once per recipe, ... #bugfix
  124. (2) Trigger for "datapoint added" could cause false derails if you were down to the wire. #bugfix
  125. From apr 4 to apr 14 you couldn't authorize 3rd parties to access your data on Beeminder (broke IFTTT/Zapier/ Big #bugfix
  126. Mini #bugfix ×3: UVIs since you last beeminded & other things using lastactive date broke, datapoints temporarily sorting wrong in Beedroid
  127. If you retroratched the same day you derailed on a do-more goal we were frequently giving an ugly error. #bugfix
  128. Newly created Withings goals were failing to fetch data for about 10 days after our big Mongoid upgrade. #bugfix (& fixed up those affected)
  129. And an unrelated Withings #bugfix: deadline-related bug meant autofetch could occasionally miss datapoints if you had nightowl deadline
  130. Small improvement to RescueTime goals (fixed coordinates of start of road) so you can't insta-derail yourself when you edit past data, etc
  131. (1/3) Beedroid (Beeminder Android app) Ver 2.6! Sign up in the app! Sort of create goals (via website but don't need to sign in separately)!
  132. (2/3) Edit goal settings (same deal)! Swipe down to refresh! Actually get notifications for backburner goals. And a bunch of other #bugfix's:
  133. (3/3) Fixing bad error messages on login/signup failure, proper handling of deleted goals or changed goalnames, handle +'s in email addresses
  134. Minis: RescueTime icon didn't have "RescueTime" next to it, broke & then fixed unsubscribe links (!), made unsub links not expire.
  135. What we used to call "slug" is now universally called "goalname" (no space, like "username")

2016 April 30+

  1. If you clicked an unsubscribe link when logged in as another user then we gave an opaque error instead of telling you what was what #bugfix
  2. iOS app version 4.3!
    1. No longer crashes when you log in w/ Facebook or hangs when you log in with Google #bugfix
    2. And we no longer crash if adding a datapoint times out or otherwise returns an error #bugfix
    3. Finally, you can now pull to refresh your goal gallery even if you have a small number of goals #mini
  3. Mini UVIs: Added Duolingo Russian phrase, better URLs for some settings like /reminders/username, alphabetized autodata icons in goal wizard
  4. Moved deadline setting (needs to always be near zeno start time), fixed Fitbit push notifications (should be faster again) #mini ×2
  5. CSV/TSV export now has iso8601 dates (both humans & machines rejoice!) and additional columns: daystamp, createdat, deadline
  6. And added a header row to the CSV/TSV to name the columns, and now we name the file with the user/goalname instead of just "datapoints.csv"
  7. When you add a datapoint with a comment to the dashboard, we immediately replace the placeholder text in the comment box. #mini
  8. In goal creation, require & actually use given current value for odometer goals (we were initially ignoring it altogether! #bugfix) #mini
  9. Fixed an ugly error on the dashboard that you'd see if one of your goals had no datapoints #mini #bugfix
  10. Better URLs for goal settings tabs: /settings, /reminders, /supporters, /terrifying, /datapoints
  11. Added a notice to about how you need the SleepCloud Backup add-on for Sleep As Android for like $1/year
  12. If your data's public then the public should see All Data link but not settings etc tabs (even though they, correctly, didn't work) #bugfix
  13. Standardized across all integrations the error message for when we can't fetch autodata, with link to go reauthorize us. #mini
  14. We made our Complice integration official, with fancy landing page and everything!
  15. Goals would go missing from the dashboard as soon as they hit the deadline and until the derailment was processed. #bugfix
  16. Beedroid #bugfix: sign-up in app acted like it failed despite succeeding (& then you had no way to log in to it, it was a mess, albeit rare)
  17. We were giving a spurious error when you first signed up or logged in (related to authenticity tokens). #bugfix #oldie
  18. RescueTime goal creation is now consistent with normal goal creation in making you enter a credit card after N goals created. #bugfix
  19. RunKeeper #bugfix: we were rejecting activities w/out a distance even for time/calories/etc where it doesn't make sense to enforce that.
  20. Barely user-visible but giving bad query params for pagination on All Data could cause 500 errors and now just nicely 404s. #mini #bugfix
  21. Fixed (at least improved a lot?) the problem that was making people have to keep logging in again #bugfix (let us know if you see it still!)
  22. New premium feature: Weekends Off!
  23. Weekends-off is now maximally lenient: you can decide at the last second to take the weekend off. (We'll monitor for abuse of this!)
  24. Beebot (our Slack bot) no longer crashes when you add an emoji reaction to a message. #bugfix
  25. More on our Slack bot: Can now send messages to beebot (eg "list" or a goalname) and it lists your most urgent goals or adds datapoints
  26. Fancy Slack bot landing page with documentation now at aka
  27. Fixed things like our Slack bot not being able to auth to multiple teams. forum post #bugfix
  28. Slackminder now includes a /charge command. You can say "charge me $X in N minutes unless I ___". See also
  29. Slackminder has goodies built in like dice rolls and sealed bid auctions cuz @dreev & @thatgirl & @andrewpbrett are huge nerds
  30. Slackminder has a built-in pomodoro timer that can automatically send data to Beeminder via a /tock command! See
  31. Slackminder open source! With that we'll stop counting UVIs to Slack bot even tho there're lots more we could list!
  32. Minis: placeholder text for slack channel zenos, #bugfix w/ RescueTime redirect after goal creation, always show hovertext for services
  33. We now always consistently use the units chosen in RunKeeper goal creation no matter what units you say in RunKeeper #bugfix HT @chipmanaged
  34. Redirected an ancient Withings FAQ page to our Withings integration landing page. #mini
  35. Importing of existing data for new RescueTime/Draft/Withings/GmailZero/GitHub/Jawbone/Epson/Misfit goals was broken for 2 months (!) #bugfix
  36. Tweaked weaselproof-me wording, and bugfixes w/ weekends-off (like so it actually works; fixed manually for everyone affected)
  37. More Rails modernization: asset pipeline theoretically speeds things up. Not sure it has but also involved breaking & fixing many URLs.
  38. Made Misfit integration use standard statute of limitations on syncing data (1 week). Fixed bug for people who didn't sync for >30 days.
  39. Another rare RescueTime bug left over from the switch to auth'ing w/out pasting API key, led to failing to fetch data on new goals. #bugfix
  40. The countdown timers for archiving & pledge stepdowns would sometimes fail to start if the page wasn't fully loaded. #bugfix
  41. One of the many bugs fixed as part of asset pipeline but we'll count it as one more UVI since it has a forum thread
  42. Improved/fixed algorithm that decides when the bee buzzes while importing, preparing your graph (was super busted for new goals for awhile)
  43. Made legacy redirects for images so we don't break hotlinks out there, unbroke the images of our pretty faces in
  44. Road Editor! Enabled for Plan Bee and above as of June 17.
  45. We no longer ignore the last row (the one equivalent to the traditional road dial) in the road editor. #bugfix
  46. Related/similar #bugfix: The last row of the road editor now lets you specify any 2-of-3 of goal-value-rate (other rows ought to but don't)
  47. If you break your road with the road editor we add a button above it to restore it to its last unbroken state.
  48. Last UVI related to asset pipeline: tooltips were broken for a while #bugfix -- And improved the error messages in the road editor #mini
  49. Race condition (either related to multiple Fitbit goals or push notifications + polling) made us lose your Fitbit auth sometimes. #bugfix
  50. It's embarrassing how many things like this we've missed: we caught another previously uncaught RescueTime error (401) & alert the user now
  51. We now include the "Things You Must Know" copy from in the email we send out for each new goal you create
  52. In the "Charge me" action in our IFTTT channel, we failed to strip whitespace from the charge amount & would wrongly complain "NaN". #bugfix
  53. Another #bugfix: when emailing you about errors like that we now show you the actual values from IFTTT, not failed attempts to parse them
  54. If you downgrade from premium and no longer have the SMS perk we fall back to email (and we fixed related copy in the UI)
  55. Got rid of an old banner wrongly telling weaselproofed people who were archiving a goal in the first week that they could instead delete it
  56. Improved our Fitbit integration landing page: cute contract image, and got "" domain
  57. Error-checking fail w/ goal creation wizard: trying to use a previously used goalname led to mysterious failures. #bugfix
  58. We now honor the units specified in Fitbit instead of always creating new weight loss goals in kilograms. #bugfix HT @dyang
  59. Due to recent refactoring we started ignoring the 'start with a week of safety buffer' option for RescueTime goals. #bugfix

2016 July 20+

  1. Copy tweak in ThingsYouMustKnow (change/charge/adjustment was easy to misread). Added weekends-off, road editor to #mini ×2
  2. A thing we broke with the last Rails upgrade: we weren't automatically getting the user's timezone on signup. #bugfix
  3. The weekends-off feature was giving you fridays off as well for do-less goals. #bugfix
  4. When improving our URL scheme in May we broke unsubscribe links for mass mails, noticed when sending next monthly beemail last week. #bugfix
  5. Road editor up-sprucing: added link to gory details, nixed redundant "add row" button, aligned the various inputs better.
  6. If whittling down Habitica To-Dos we now use your low-water mark of the day ⇒ no surprise derails from adding new To-dos before deadline
  7. The road editor was rejecting roads if the final row had just goal value (or goal total) and rate specified (ie, no date). #bugfix
  8. Slackminder has a built-in karmabot (do "/karma help")! And additional mini Habitica fix: no more delays in 1st fetch of day.
  9. New road editor bug from when we spruced it up: it was duplicating the initial road row if you submitted multiple times in a row. #bugfix
  10. TagTime ping notifier in Slack bot ("/tagtime on") & turns out when we thought we fixed the deauth callback thing we broke it instead
  11. If the author of an app you authorized to access your beeswax deletes it we now remove it from (& no erroring out)
  12. SMS bot reminders more concise after initial reminder on an eep day. Eg, "Eep! +3 in <30m for pushups ($5)"
  13. The SMS bot now has a better welcome message, has START as an alias for ACTIVATE, and responds to HELP with helpfulness.
  14. More tweaks to the SMS bot: Say "added" datapoint, not "updated". And we now give the time remaining in minutes at the end, not just "<1h".
  15. Previous Habitica #bugfix in fact broke it worse. :facepalm: Fixed the fix now. Bonus UVI: Fixed the redundant headers in
  16. #bugfix in API: give a nice error instead of a 500 if you submit a malformed daystamp for a datapoint. HT Malcolm Ocean of Complice.
  17. We'd missed a bunch of cases of "sign in" → "log in". Also fixed a typo in the beemail descriptions. #mini
  18. Added tooltip for Complice on the front page, moved the copy around in the "getting reminder about your..." email & added link to goal
  19. Links to goals in reminder emails now use "" as the anchor text instead of goal title (which is now the title text)
  20. Premium plans revamp! Hopefully you don't view this as a negative UVI but it's part of ensuring Beeminder thrives for many more years, so...
  21. Beeminder now has a charity option! It's a premium perk to opt in to donating half your pledges to Watsi, EFF, or Give Directly
  22. is now viewable even if you're not logged in (the "Add Plan" buttons become "Sign Up")
  23. Similarly, if you're logged in but haven't added a credit card then the buttons say "Add Payment Method"
  24. New premium FAQ at the bottom of and moved the Exquisitely Fair Slider below the plan blurbs
  25. We now treat Core Beeminder (ie, the $0/month plan) as one of the plans. And btw, we're retiring the Beekeeper lifecoaching program. RIP.
  26. Now clearer how to switch between plans: plan you're on highlighted, says "currently subscribed", can click "downgrade" to downgrade, etc.
  27. Lifetime subscriptions are clearer. Rather than just disabling the plan button it says "lifetime subscribed".
  28. We tested when to make you add a credit card (commit-wall, not paywall), found earlier is better so now we do that after 1 or 2 goals
  29. Made a button on the new paywall to request additional free goals if you need more time to experiment or already pay lots in pledges
  30. Added a link to in the top navigation bar, and edits in the FAQ etc to get in line with premium changes
  31. Made the "discount please" button on do something more sensible if you're not logged in (like telling you to do so)
  32. Changed the features listed for Core Beeminder in based on this poll
  33. Speaking of dangling carrots, the charities weren't clickable for Beemium people when we first deployed this. HT Kenn Hamm
  34. Plugged leak in the commit-wall: creating various autodata goals circumvented the prompt to add your credit card before creating more goals
  35. Replaced another instance of our janky credit card form with Stripe's elegant one, on the /premium page when you click Add Payment
  36. Forgot html_safe in zeno emails so were sending literal "<a href='...." etc. #bugfix HT Markos Giannopoulos
  37. Added link to datapoints on archived goals. No need to hide data, though still can't edit/delete it. HT Kenn Hamm again
  38. Minis on Link to new blog post, clicking Sign Up button pops up a popup to sign up (but redirects you away after)
  39. Another tiny one: Lifetime subscribers to legacy plans now see the plan description even if they've upgraded to another plan
  40. Closed couple loopholes that let you apply discount coupons to legacy plans; also updates & additions ("Loophole idea!") to the premium FAQ
  41. In the premium revamp, introduced a bug that prevented creation of weight gain goals. This is America so it took a while to notice. #bugfix
  42. The first time you push the "more free goals" button we just give you one automatically. Not sure how we feel about that, but, experiments!
  43. And added a comment box with the "more free goals" & "discount please" buttons, for stating your case (and giving us much-needed feedback!)
  44. If you came to /premium w/ a coupon code we'd forget it after page reload after clicking a button to add a plan. Coupon worked but.. #bugfix
  45. Another bug in /premium with how pricing was displayed (when on a legacy plan, it looked like Infinibee cost more than Bee Plus) #bugfix
  46. Y'know how weasel-proofed goals aren't deletable in the first week like normal? Buggily, the archive button wasn't working either. #bugfix
  47. In some thankfully rare cases, if you chose Slack DM for zeno alerts, they'd not show up (forgot to make sure DM channel was open) #bugfix
  48. #bugfix in Habitica more-Todos goal creation: would start road at 0 but credit you w/ all to-dos ever completed => unreasonably big buffer
  49. Bugfix of the #bugfix (HT Alys for both): accidentally truncated Habitica goals to start from today (manually fixed everyone affected)
  50. We updated/clarified the list of weasel restrictions in goal settings: no editing or manually adding data to autodata goal, no deleting
  51. Bug w/ downgrading premium plans if you had a coupon discount: we failed to apply it! Gulp! #bugfix HT @my9goofie (Manually did refunds)
  52. Fixed our dumb Facebook share button (on the goal pages) that's been broken for we-don't-know-how-long. HT @florismk
  53. Another embarrassing one: 1st attempt (Jul 4) to fix broken image links (rails asset pipeline) left several broken that we just now #bugfix'd
  54. We improved the Facebook share button: shows both goalname & title if different, & to round out this tiny UVI: fixed a typo in goal settings
  55. Facebook sharing #bugfix: it was picking the wrong image because we tried to specify the thumbnail which isn't on the page being shared
  56. Moved the discount slider back to the top and added an FAQ item to
  57. If you're not premium we strip html tags from your "about me" blurb & add a nofollow to the "personal url" when linked under your avatar
  58. #bugfix w/ creating Skritter goals: worked around changes on Skritter side. Now at least works smoothly if already logged in to Skritter.
  59. Rounding bug w/ applying coupons for premium plans could make displayed price a whole dollar off :/ #bugfix HT Markos Giannopoulos
  60. When you create a goal w/ the API you can now specify the data source (manual, api, ifttt, zapier). HT Malcolm Ocean & Complice
  61. Instead of just strongly suggesting it (via banner) we now force you to confirm your email before letting you give us your credit card
  62. (1 of 3) More helpful unsubscribe link! Sends you to a page with a big red button, is clear about what happens if you press it, ...
  63. (2 of 3) ... still tells you what's up if you visit the link multiple times, doesn't try to redirect to goal gallery, tells you your beemail ...
  64. (3 of 3) ... subscription level and number of active goals, and the button helpfully goes away on that page once it's done its job.
  65. Forcing email confirmation before adding credit card spawned couple bugs for grandfathered users, not allowing changing cc, etc #bugfix

2016 September 21+

2016 December

2017 January

2017 February

2017 March

2017 April