-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuvis2022.js
2575 lines (2562 loc) · 173 KB
/
uvis2022.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
const batch2022jan = [{
"x": "Our API docs for the charges endpoint were wrong. You must include a user_id parameter (technically it worked anyway when using a personal auth_token). #bugfix",
"u": ["https://twitter.com/beemuvi/status/1478159041335480321",
"https://github.com/beeminder/beeminder/issues/2888",
"https://github.com/beeminder/apidocs/commit/3d3e7df561ccaa845e31d3b309103b50e9e96646"],
"d": "2022-01-03",
"c": "For arcane reasons this worked fine when using the endpoint with your personal auth token, but without the user_id parameter, the endpoint would fail for Beeminder oauth clients using access_tokens to do stuff on behalf of users. HT narthur",
}, { // ------------------------------------------------------------------------
"x": "Login with Facebook was broken for maybe months and nobody told us about it until now! PSA: we love if you tell us when we've got a booger on our face. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1478160154747019269",
"https://github.com/beeminder/beeminder/issues/2889"],
"d": "2022-01-03",
"c": "Fix was simple and involved pushing some buttons in the Facebook developer console. They changed things with how their scopes work.",
}, { // ------------------------------------------------------------------------
"x": "We ended the year of grandfathering for the last Beemium price increase. Everyone is paying at least $40/mo (modulo discounts) for Beemium now.",
"u": ["https://twitter.com/beemuvi/status/1478522412492681223",
"https://github.com/beeminder/beeminder/issues/2690",
"https://github.com/beeminder/beeminder/issues/2767",
"https://github.com/beeminder/beeminder/pull/2773",
"https://github.com/beeminder/beeminder/pull/2769"],
"d": "2022-01-02",
"t": "2022-01-04",
"c": "Aka grandpatricide, Beemium $32 -> 40. We called it a UVI last time: UVI#3086. PR#2769 is for the email warning people on Nov 17, I think.",
}, { // ------------------------------------------------------------------------
"x": "Help docs updates! More details on how to interpret graphs (x-min/max settings) + updated screenshots/terminology/explanations in \"How do I change my goal?\"",
"u": ["https://twitter.com/beemuvi/status/1478525201826541568",
"https://help.beeminder.com/article/118-how-do-i-interpret-the-graph",
"https://help.beeminder.com/article/54-how-do-i-change-my-goal",
"https://forum.beeminder.com/t/help-docs-updates-as-uvis/6672/47?u=dreev"],
"d": "2021-12-31",
"c": "E.g. “Commit to” to “Commitment dial”, calling the edge of the graph the bright red line",
"d": "2021-12-31",
"t": "2022-01-04",
}, { // ------------------------------------------------------------------------
"x": "More help docs improvements! A new FAQ item (asked by a real user) on the Gitminder (GitHub integration) page and general copyediting there and in example goals",
"u": ["https://twitter.com/beemuvi/status/1478893374291603457",
"https://help.beeminder.com/article/81-github",
"https://help.beeminder.com/article/95-example-goal-learn-a-new-language",
"https://forum.beeminder.com/t/help-docs-updates-as-uvis/6672/47?u=dreev",
"https://github.com/beeminder/beeminder/issues/1605"],
"d": "2022-01-04",
"t": "2022-01-05",
}, { // ------------------------------------------------------------------------
"x": "Our Toggl autodata integration now has a proper page in the help docs (was previously a stub with a rough synopsis of how it worked). HT @shanaqui as usual.",
"u": ["https://twitter.com/beemuvi/status/1478893463538049024",
"https://help.beeminder.com/article/155-toggl"],
"d": "2021-01-05",
"t": "2021-01-05",
}, { // ------------------------------------------------------------------------
"x": "Our Strava autodata integration now has help docs (this one was missing altogether till now; gulp)",
"u": ["https://twitter.com/beemuvi/status/1478893612561698816",
"https://help.beeminder.com/article/281-strava"],
"d": "2021-01-05",
"t": "2021-01-05",
}, { // ------------------------------------------------------------------------
"x": "Copyediting and typo fixes in the Toggl and Strava help pages + updated screenshots/terminology/explanation in \"Can I get rid of extra safety buffer?\"",
"u": ["https://twitter.com/beemuvi/status/1479249757323231236",
"https://help.beeminder.com/article/56-can-i-get-rid-of-extra-safety-buffer"],
"d": "2021-01-06",
"t": "2021-01-06",
"c": "E.g., we were still saying things like 'max safe days' instead of 'auto-ratchet'",
}, { // ------------------------------------------------------------------------
"x": "We'd sometimes count you as 'inactive' if your only goals were certain autodata ones. This meant wrongly stopping premium payments, freezing goals, etc. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1479611669051441152",
"https://github.com/beeminder/beeminder/issues/1081",
"https://github.com/beeminder/beeminder/pull/2896"],
"d": "2022-01-05",
"t": "2022-01-07",
"c": "Details about user-visibility and which integrations in the gissue",
}, { // ------------------------------------------------------------------------
"x": "Captcha UI improvements cuz humans were still failing it. Most usefully, highlighting the field in red and adding a red error banner to the page.",
"u": ["https://twitter.com/beemuvi/status/1479612600123944962",
"https://github.com/beeminder/beeminder/issues/2890",
"https://github.com/beeminder/beeminder/pull/2891"],
"d": "2022-01-04",
"t": "2022-01-07",
}, { // ------------------------------------------------------------------------
"x": "Also the error message now mentions \"captcha\" explicitly instead of \"human check\" and says explicitly that the thing you typed (which it quotes) was wrong",
"u": ["https://twitter.com/beemuvi/status/1479976696287838216",
"https://github.com/beeminder/beeminder/issues/2890",
"https://github.com/beeminder/beeminder/pull/2891"],
"d": "2022-01-04",
"t": "2022-01-08",
}, { // ------------------------------------------------------------------------
"x": "We now enforce no-duplicate-requestIDs at the database level and sure enough, the iOS app was sending dups that weren't otherwise getting de-dup'd. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1479982546347646977",
"https://github.com/beeminder/beeminder/issues/198"],
"d": "2022-01-08",
"t": "2022-01-08",
"c": "#regression See also UVI#2686 and UVI#2747",
}, { // ------------------------------------------------------------------------
"x": "Not sure if the fix to requestIDs affected things other than iOS (in theory it could've!). We also removed the now-moot warning about this in the API docs.",
"u": ["https://twitter.com/beemuvi/status/1480333521189175299",
"https://github.com/beeminder/apidocs/commit/a9136bad53190565b2c9d82799f548c6a751bf32"],
"d": "2022-01-09",
"t": "2022-01-09",
"c": "The docs fix was also our excuse to milk this huge zombie slaying for two UVIs. For posterity: \"NB: If you're sending multiple create datapoint requests in rapid succession (within say < 100-500ms of each other) using this endpoint, and sending the same requestid, it's not guaranteed that the datapoints won't be duplicated, as you might expect.\"",
}, { // ------------------------------------------------------------------------
"x": "Strava users thought we were buggily missing their virtual rides/runs. Those are now adjacent to normal rides/runs in goal creation to mitigate that confusion.",
"u": ["https://twitter.com/beemuvi/status/1480334132047605760",
"https://github.com/beeminder/beeminder/issues/2906"],
"d": "2022-01-09",
"t": "2022-01-09",
"c": "Hopefully it will now be clear to the user that they should select both if they want both to count",
}, { // ------------------------------------------------------------------------
"x": "Help docs improvements: less weaselly wording in goal pausing doc + new FAQ item for the Gmail integration about multiple accounts",
"u": ["https://twitter.com/beemuvi/status/1483602131357626370",
"https://help.beeminder.com/article/98-can-i-put-my-goal-on-pause-for-a-little-bit",
"https://help.beeminder.com/article/82-gmail"],
"d": "2022-01-11",
"t": "2022-01-18",
}, { // ------------------------------------------------------------------------
"x": "Revamped the help page for starting a goal over, to discourage deleting data and clarify that if you do you still have to talk to us to prevent charges",
"u": ["https://twitter.com/beemuvi/status/1483602274341429251",
"https://help.beeminder.com/article/117-can-i-start-my-goal-over"],
"d": "2022-01-11",
"t": "2022-01-18",
}, { // ------------------------------------------------------------------------
"x": "Updated screenshot and new section (plus copyedits) for the weekends-off help page",
"u": ["https://twitter.com/beemuvi/status/1483961497977982977",
"https://help.beeminder.com/article/57-what-if-i-only-want-to-do-my-goal-on-weekdays",
"https://forum.beeminder.com/t/help-docs-updates-as-uvis/6672/55?u=dreev"],
"d": "2022-01-12",
"t": "2022-01-19",
}, { // ------------------------------------------------------------------------
"x": "New screenshot (albeit an outdated one) in the \"how do I tell Beeminder what day my week starts\" help page helping to illustrate why that is not a thing",
"u": ["https://twitter.com/beemuvi/status/1483963014399201281",
"https://twitter.com/beemuvi/status/1483963014399201281",
"https://help.beeminder.com/article/123-weekstart",
"https://forum.beeminder.com/t/help-docs-updates-as-uvis/6672/56?u=dreev"],
"d": "2022-01-12",
"t": "2022-01-19",
}, { // ------------------------------------------------------------------------
"f": true,
"x": "You can no longer specify goals as per week or per month on goal creation (though you can still switch to having them show non-daily rates later)",
"u": ["https://twitter.com/beemuvi/status/1484322743063437319",
"https://github.com/beeminder/beeminder/issues/2925",
"https://github.com/beeminder/beeminder/pull/2927"],
"d": "2022-01-14",
"t": "2022-01-20",
}, { // ------------------------------------------------------------------------
"x": "Per the Pareto Dominance Principle (see previous UVI) we now support arithmetic in the rate field. Eg, you can say \"5/7 per day\" to mean \"5 per week\"",
"u": ["https://twitter.com/beemuvi/status/1484323406807920644",
"https://github.com/beeminder/beeminder/issues/2925",
"https://github.com/beeminder/beeminder/pull/2927"],
"d": "2022-01-14",
"t": "2022-01-20",
}, { // ------------------------------------------------------------------------
"x": "And we have a new popup where you pick the rate in goal creation to explain all this",
"u": ["https://twitter.com/beemuvi/status/1484323701810024449",
"https://github.com/beeminder/beeminder/issues/2925",
"https://github.com/beeminder/beeminder/pull/2927"],
"d": "2022-01-14",
"t": "2022-01-20",
}, { // ------------------------------------------------------------------------
"x": "Oops, \"PER DAY\" was showing up on weight and inbox goal creation screens despite having no field for setting a rate there. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1484682128784691200",
"https://github.com/beeminder/beeminder/issues/2928",
"https://github.com/beeminder/beeminder/pull/2929"],
"d": "2022-01-18",
"t": "2022-01-21",
"c": "#regression",
}, { // ------------------------------------------------------------------------
"x": "Help docs: edits to \"What if I only want to do this once a month?\" to make it true and \"My goal makes no sense\" to be less customer service-y",
"u": ["https://twitter.com/beemuvi/status/1484966464520011777",
"https://help.beeminder.com/article/58-what-if-i-only-want-to-do-something-once-a-month",
"https://help.beeminder.com/article/124-my-goal-doesnt-make-any-sense"],
"d": "2022-01-22",
"t": "2022-01-22",
}, { // ------------------------------------------------------------------------
"x": "Help docs: new screenshots and copy-tweaking for the extensive article on Do More goals",
"u": ["https://twitter.com/beemuvi/status/1484966629259689988",
"https://help.beeminder.com/article/66-do-more-goals"],
"d": "2022-01-14",
"t": "2022-01-22",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Copyedits, new links, more explanation of ratcheting for Do Less goals + freshened up the page on Odometer goals",
"u": ["https://twitter.com/beemuvi/status/1485404059624374275",
"https://help.beeminder.com/article/67-do-less-goals",
"https://help.beeminder.com/article/68-odometer-goals",
"https://forum.beeminder.com/t/help-docs-updates-as-uvis/6672/63?u=dreev"],
"d": "2022-01-19",
"t": "2022-01-23",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Updated screenshots and deconfused some prose for the page on Whittle Down goals",
"u": ["https://twitter.com/beemuvi/status/1485404201198833666",
"https://help.beeminder.com/article/69-whittle-down-goals",
"https://forum.beeminder.com/t/help-docs-updates-as-uvis/6672/65?u=dreev"],
"d": "2022-01-20",
"t": "2022-01-23",
}, { // ------------------------------------------------------------------------
"x": "In the bot response for ambiguous data, we now give the full support@beeminder.com address, not just, confusingly/buggily, support@beeminder",
"u": ["https://twitter.com/beemuvi/status/1485771404561682436",
"https://github.com/beeminder/beeminder/issues/2915",
"https://github.com/beeminder/beeminder/pull/2916"],
"t": "2022-01-24",
}, { // ------------------------------------------------------------------------
"x": "Updated the \"About\" box on the blog and fixed a broken image in an old post",
"u": ["https://twitter.com/beemuvi/status/1485772308513898496",
"https://blog.beeminder.com"],
"t": "2022-01-24",
}, { // ------------------------------------------------------------------------
"x": "When you confirmed your email we'd leave the banner telling you that you needed to confirm your email up for one extra page load. Now we don't do that. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1486118126051737603",
"https://github.com/beeminder/beeminder/pull/2944"],
"d": "2022-01-25",
"t": "2022-01-25",
"c": "Also applied when you were deadbeated and got a banner telling you to update your payment method. No gissue for this I guess?",
}, { // ------------------------------------------------------------------------
"x": "Tiny improvement for users but handy for support helping you set breaks: don't need a username in the breaks URL for pre-specifying start/finish. See UVI#3944.",
"u": ["https://twitter.com/beemuvi/status/1486118476187979776",
"https://github.com/beeminder/beeminder/issues/2947",
"https://github.com/beeminder/beeminder/pull/2948"],
"d": "2022-01-25",
"t": "2022-01-25",
}, { // ------------------------------------------------------------------------
"x": "Help docs: the page on custom got some edits, a link update, and some nudges to avoid custom goals if you don't know what you're doing!",
"u": ["https://twitter.com/beemuvi/status/1486500292837326848",
"https://help.beeminder.com/article/97-custom-goals"],
"d": "2022-01-21",
"t": "2022-01-26",
}, { // ------------------------------------------------------------------------
"x": "Help docs: the megabreak page (scheduling breaks on many goals at once) has a new screenshot and new instructions about the URL start/finish trick",
"u": ["https://twitter.com/beemuvi/status/1486500743423037441",
"https://help.beeminder.com/article/154-can-i-schedule-breaks-on-many-goals-at-once",
"https://forum.beeminder.com/t/help-docs-updates-as-uvis/6672/68?u=dreev"],
"d": "2022-01-25",
"t": "2022-01-26",
}, { // ------------------------------------------------------------------------
"x": "As part of improvements to the iOS app, we forced all Apple Health sleep goals to have 6pm deadlines (it's how Apple aggregates by day) & emailed those affected",
"u": ["https://twitter.com/beemuvi/status/1486788923711918080",
"https://github.com/beeminder/beeminder/issues/2887",
"https://github.com/beeminder/beeminder/pull/2895",
"https://github.com/beeminder/beeminder/pull/2894"],
"d": "2022-01-05",
"t": "2022-01-27",
"c": "We still need to prevent new goals from getting non-6pm-deadlines too",
}, { // ------------------------------------------------------------------------
"x": "Embarrassingly, we did the whitelisting wrong in UVI#3466 and finally noticed. So now we for-real whitelist ourselves when emailing the Beeminder bot!",
"u": ["https://twitter.com/beemuvi/status/1486866032216068098",
"https://github.com/beeminder/beeminder/issues/2926"],
"d": "2022-01-26",
"t": "2022-01-27",
"c": "It should've been helpscout.net not beeminder.helpscout.com, which, confusingly, is the address we'd get if we hadn't customized our domain for email-sending. This was a #regression from moving to HelpScout in the first place and now it's finally fixed. A cheap UVI since it's really just making a previous UVI finally be true!",
}, { // ------------------------------------------------------------------------
"x": "Help docs: a bunch of copyedits and a modernized screenshot on the PPRs page + clarifying copyedits on the \"What is my data?\" & \"How to enter data\" pages",
"u": ["https://twitter.com/beemuvi/status/1487217467281739776",
"https://help.beeminder.com/article/157-pessimistic-presumptive-reports",
"https://help.beeminder.com/article/36-what-is-my-data",
"https://help.beeminder.com/article/37-how-do-i-enter-data-to-my-goal"],
"d": "2022-01-28",
"t": "2022-01-28",
}, { // ------------------------------------------------------------------------
"x": "Help docs: In \"How do I fix incorrect data?\", added info about why deleting datapoints can be bad and about insta-derails, plus other copyedits",
"u": ["https://twitter.com/beemuvi/status/1487217565864587264",
"https://help.beeminder.com/article/39-how-do-i-fix-incorrect-data"],
"d": "2022-01-28",
"t": "2022-01-28",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Add a paragraph about Boss as a Service to the help page about whether anyone else can add data to your goal",
"u": ["https://twitter.com/beemuvi/status/1488311561680687106",
"https://help.beeminder.com/article/40-can-anybody-else-add-data-to-my-goal"],
"d": "2022-01-28",
"t": "2022-01-31",
}, { // ------------------------------------------------------------------------
"x": "Help docs: new screenshot and a bit of clarifying language and other copyediting for \"Can I change my goal units after the goal's created?\"",
"u": ["https://twitter.com/beemuvi/status/1488311648846630915",
"https://help.beeminder.com/article/42-can-i-switch-my-goal-units-after-its-created"],
"d": "2022-01-28",
"t": "2022-01-31",
}, /* --------------------------------------------------------- end 2022jan */ ]
const batch2022feb = [{
"x": "New help menu in the header! Links to the FAQ, forum, help docs, and contact page.",
"u": ["https://twitter.com/beemuvi/status/1488663407549059080",
"https://github.com/beeminder/beeminder/issues/2942",
"https://github.com/beeminder/beeminder/pull/2967"],
"d": "2022-02-01",
"t": "2022-02-01",
}, { // ------------------------------------------------------------------------
"x": "When you don't have Slack configured, we now, sensibly, don't let you set reminders for Slack (was already true on goal pages but not http://beeminder.com/reminders)",
"u": ["https://twitter.com/beemuvi/status/1488663520434483202",
"https://github.com/beeminder/beeminder/issues/2908",
"https://github.com/beeminder/beeminder/pull/2965"],
"d": "2022-02-01",
"t": "2022-02-01",
}, { // ------------------------------------------------------------------------
"x": "Added a bunch of webcopy to http://beeminder.com/contact to set expectations about turnaround time in support",
"u": ["https://twitter.com/beemuvi/status/1489034463199698944",
"https://github.com/beeminder/beeminder/issues/2962",
"https://github.com/beeminder/beeminder/pull/2968"],
"d": "2022-02-02",
"t": "2022-02-02",
}, { // ------------------------------------------------------------------------
"x": "We fixed some broken html, probably only user-visible on ancient browsers (stupid Postel's Law), and got our moribund Instagram link out of the site footer",
"u": ["https://twitter.com/beemuvi/status/1489401144220676098",
"https://github.com/beeminder/beeminder/issues/1666",
"https://github.com/beeminder/beeminder/issues/2263",
"https://github.com/beeminder/beeminder/issues/2913",
"https://github.com/beeminder/beeminder/issues/2972"],
"d": "2022-02-03",
"t": "2022-02-03",
"c": "Oh, and bumping the copyright year to 2022 while we were at it",
}, { // ------------------------------------------------------------------------
"x": "Help docs: rewrote the page on what happens if you forget to enter data, in particular mentioning how it's possible to derail yourself entering yesterday's data",
"u": ["https://twitter.com/beemuvi/status/1490825272341319680",
"https://help.beeminder.com/article/38-what-happens-if-i-forgot-to-enter-data"],
"d": "2022-02-07",
"t": "2022-02-07",
}, { // ------------------------------------------------------------------------
"x": "We took the next step from UVI#3847 and removed the ability to add PayPal as a payment method (can still switch back and forth if you already added it)",
"u": ["https://twitter.com/beemuvi/status/1491187722287185922",
"https://github.com/beeminder/beeminder/issues/1840",
"https://github.com/beeminder/beeminder/issues/2987",
"https://github.com/beeminder/beeminder/pull/2969"],
"d": "2022-02-02",
"t": "2022-02-08",
}, { // ------------------------------------------------------------------------
"x": "Added Zone Minutes to our Fitbit autodata integration because the older Active Minutes isn't even discoverable in the Fitbit app if you have a Heart Rate device",
"u": ["https://twitter.com/beemuvi/status/1491571851369193475",
"https://github.com/beeminder/beeminder/issues/2146",
"https://github.com/beeminder/beeminder/pull/2986"],
"d": "2022-02-09",
"t": "2022-02-09",
}, { // ------------------------------------------------------------------------
"x": "We also added little explainers to the UI for Fitbit metric selection to tell you whether you probably want Zone Minutes or Active Minutes",
"u": ["https://twitter.com/beemuvi/status/1491936518755151872",
"https://github.com/beeminder/beeminder/issues/2146",
"https://github.com/beeminder/beeminder/pull/2986"],
"d": "2022-02-09",
"t": "2022-02-10",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Corrected the max pledge amount (it's $7290) for the \"How much do I pledge\" page and did a bunch of cleanup to the text, hovertext on links, etc",
"u": ["https://twitter.com/beemuvi/status/1492281787371843584",
"https://help.beeminder.com/article/20-how-much-do-i-pledge-on-my-goals"],
"c": "Also nixed the paragraph defending our weirdo tripling-ish pledge schedule since we don't really believe anymore that that's better than just doubling",
}, { // ------------------------------------------------------------------------
"x": "Closed UVI#4031's loophole / loose end: If you create a non-6pm-deadline goal and link to Apple Health sleep, we forcibly move the deadline to 6pm",
"u": ["https://twitter.com/beemuvi/status/1493383876441296896",
"https://github.com/beeminder/beeminder/issues/2887"],
"d": "2022-02-11",
"t": "2022-02-14",
"c": "Kinda hacky but better than the wrongness and confusion that ensues otherwise. Ideally BeemiOS would handle this as part of the UI for linking a goal to Apple Health",
}, { // ------------------------------------------------------------------------
"x": "Help docs: new screenshots, clarifications for the article on changing your pledge, plus copyediting, adding hovertext to links, etc",
"u": ["https://twitter.com/beemuvi/status/1493740876702502913",
"https://help.beeminder.com/article/21-can-i-change-the-pledge-on-my-goal"],
"t": "2022-02-15",
}, { // ------------------------------------------------------------------------
"x": "Help docs: revamped the page on pledge caps, including replacing a very outdated and wrong screenshot. See UVI#3856.",
"u": ["https://twitter.com/beemuvi/status/1494107264185253888",
"https://help.beeminder.com/article/22-can-i-limit-how-high-my-pledge-gets"],
"d": "2022-02-14",
"t": "2022-02-16",
}, { // ------------------------------------------------------------------------
"x": "Help docs revamps/fixes: Garmin page (eg, updated list of metrics), managing premium subscriptions (button stuff changed), auto-canceling (clarification)",
"u": ["https://twitter.com/beemuvi/status/1494826949813800961",
"https://help.beeminder.com/article/74-garmin",
"https://help.beeminder.com/article/24-how-do-i-manage-my-subscription",
"https://help.beeminder.com/article/25-how-do-auto-canceling-subscriptions-work"],
"t": "2022-02-18",
}, { // ------------------------------------------------------------------------
"x": "Popups (aka modals aka dialog boxes that pop up over the rest of the screen) are draggable now, in case you need to see something underneath them",
"u": ["https://twitter.com/beemuvi/status/1495897699773816833",
"https://github.com/beeminder/beeminder/issues/2999",
"https://github.com/beeminder/beeminder/pull/3000"],
"d": "2022-02-16",
"t": "2022-02-21",
}, { // ------------------------------------------------------------------------
"x": "Trello changed their API and broke our autodata integration for some users. We changed the thing that needed changing on our end and it works again! #bugfix",
"u": ["https://twitter.com/beemuvi/status/1495897968666419204",
"https://github.com/beeminder/beeminder/issues/2846"],
"d": "2022-02-17",
"t": "2022-02-21",
}, { // ------------------------------------------------------------------------
"x": "Help docs: updated two articles about payment methods with clarifications, corrections, and experimenting with adding keywords to help pages",
"u": ["https://twitter.com/beemuvi/status/1496270272709951493",
"https://help.beeminder.com/article/27-what-payment-methods-are-available",
"https://help.beeminder.com/article/28-how-do-i-update-my-payment-information"],
"t": "2022-02-22",
}, { // ------------------------------------------------------------------------
"f": true,
"x": "No-Excuses Mode! We killed doctor's-note-style weaselproofing. Instead you can commit to not call non-legit at all. Simpler, cleaner, fairer, better.",
"u": ["https://twitter.com/beemuvi/status/1496270964669452289",
"https://blog.beeminder.com/noexcuses/",
"https://github.com/beeminder/beeminder/issues/2964"],
"d": "2022-02-22",
"t": "2022-02-22",
}, { // ------------------------------------------------------------------------
"x": "We dropped the akrasia-proofing of weaselproofing / No-Excuses Mode. You can toggle it on and off at will.",
"u": ["https://twitter.com/beemuvi/status/1496646367988510720",
"https://github.com/beeminder/beeminder/issues/2964"],
"d": "2022-02-22",
"t": "2022-02-23",
}, { // ------------------------------------------------------------------------
"x": "But we show when you last turned it on/off, including in the legit check email, making it hard to reply non-legit with a straight face if you JUST turned it off",
"u": ["https://twitter.com/beemuvi/status/1496646513040457729",
"https://github.com/beeminder/beeminder/issues/2964",
"https://github.com/beeminder/beeminder/pull/3012"],
"d": "2022-02-23",
"t": "2022-02-23",
}, { // ------------------------------------------------------------------------
"x": "We changed \"legit check\" emails to \"derailment notifications\" for the case that you derail on a goal that has No-Excuses Mode turned on",
"u": ["https://twitter.com/beemuvi/status/1497004650947514379",
"https://github.com/beeminder/beeminder/issues/2964"],
"d": "2022-02-22",
"t": "2022-02-24",
}, { // ------------------------------------------------------------------------
"x": "We changed all the webcopy, the FAQ, and the glossary to refer to No-Excuses Mode instead of weaselproofing (and some old blog posts, but not the help docs yet)",
"u": ["https://twitter.com/beemuvi/status/1497004739686404099",
"https://github.com/beeminder/beeminder/issues/2964"],
"t": "2022-02-24",
}, { // ------------------------------------------------------------------------
"x": "We emailed everyone who'd ever turned weaselproofing on on any goal and made it easy for them to opt in to No-Excuses Mode instead",
"u": ["https://twitter.com/beemuvi/status/1497004837887643652",
"https://github.com/beeminder/beeminder/issues/2964"],
"t": "2022-02-24",
}, { // ------------------------------------------------------------------------
"x": "The banner confirmation when you disengaged No-Excuses Mode was erroneously saying \"engaged\". #bugfix HT user root2",
"u": ["https://twitter.com/beemuvi/status/1497369582851354627",
"https://github.com/beeminder/beeminder/issues/3011",
"https://github.com/beeminder/beeminder/pull/3019"],
"t": "2022-02-25",
}, { // ------------------------------------------------------------------------
"x": "Help docs: we thoroughly rewrote our page on what derailing means. It was so old it was all wrong! Added links, screenshots, hovertext.",
"u": ["https://twitter.com/beemuvi/status/1498448976860758016",
"https://help.beeminder.com/article/12-what-is-a-derailment"],
"t": "2022-02-28",
"c": "It had pre-yellow-brick-half-plane and pre-red-yesterday stuff!"
}, { // ------------------------------------------------------------------------
"x": "We now give a helpful hint along with the error response when you mix up POST and PUT in our API (and in general when a route's not found)",
"u": ["https://twitter.com/beemuvi/status/1498451218493960193",
"https://github.com/beeminder/beeminder/issues/2001"],
"d": "2022-02-28",
"t": "2022-02-28",
}, { // ------------------------------------------------------------------------
"x": "Help docs: link hovertext and an explanation for why some charges take longer than 24 hours to appear for the \"Why did Beeminder charge my card\" page",
"u": ["https://twitter.com/beemuvi/status/1498825038266466305",
"https://help.beeminder.com/article/29-why-did-beeminder-charge-my-card"],
"d": "2022-02-23",
"t": "2022-03-01",
}, /* --------------------------------------------------------- end 2022feb */ ]
const batch2022mar = [{
"x": "Help docs: The \"What happens if a charge fails?\" page now says exactly what happens when the poorly-named deadbeat flag is set. Also keywords.",
"u": ["https://twitter.com/beemuvi/status/1498825431608270850",
"https://help.beeminder.com/article/30-what-happens-if-a-charge-fails"],
"d": "2022-02-23",
"t": "2022-03-01",
}, { // ------------------------------------------------------------------------
"x": "Help docs: The \"When do derailments happen?\" page has new screenshots with hovertext, plus clarification about changing deadlines",
"u": ["https://twitter.com/beemuvi/status/1499186316835131392",
"https://help.beeminder.com/article/13-when-do-derailments-happen"],
"t": "2022-03-02",
}, { // ------------------------------------------------------------------------
"x": "Help docs: The \"What is a legit derailment?\" is updated for No-Excuses mode, plus hovertext and keywords, etc",
"u": ["https://twitter.com/beemuvi/status/1499189995571011588",
"https://help.beeminder.com/article/16-what-is-a-legit-derailment"],
"t": "2022-03-02",
}, { // ------------------------------------------------------------------------
"x": "Help docs: removed ancient screenshots and explained more things in \"What happens when I derail?\" and added hovertext on images on several help pages",
"u": ["https://twitter.com/beemuvi/status/1499544661207117824",
"https://help.beeminder.com/article/17-what-happens-when-i-derail"],
"d": "2022-03-01",
"t": "2022-03-03",
"c": "It had pre-YBHP and pre-red-yesterday stuff! Also keywords and linking to No-Excuses Mode, etc.",
}, { // ------------------------------------------------------------------------
"x": "Help docs: did a pretty thorough weaselproofing-ectomy throughout the docs. Viva la No-Excuses Mode!",
"u": ["https://twitter.com/beemuvi/status/1499544815175757827",
"https://help.beeminder.com"],
"d": "2022-03-01",
"t": "2022-03-03",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Added alt/title text for links & a bit of upside-down support to \"Can I get rid of extra safety buffer?\" + keywords on this and several other pages",
"u": ["https://twitter.com/beemuvi/status/1503513606591168516",
"https://help.beeminder.com/article/56-can-i-get-rid-of-extra-safety-buffer"],
"d": "2022-03-01",
"t": "2022-03-14",
}, { // ------------------------------------------------------------------------
"x": "Help docs: \"How do I quit a goal?\" now talks about deleting archived goals, what happens when you derail an archiving goal, and has updated screenshots",
"u": ["https://twitter.com/beemuvi/status/1503513774694699011",
"https://help.beeminder.com/article/44-how-do-i-quit-a-goal"],
"d": "2022-03-02",
"t": "2022-03-14",
}, { // ------------------------------------------------------------------------
"x": "Help docs: fresh screenshot and minor rewording for \"What happens to an archived goal?\"",
"u": ["https://twitter.com/beemuvi/status/1503881746634342400",
"https://help.beeminder.com/article/46-what-happens-to-an-archived-goal"],
"d": "2022-03-03",
"t": "2022-03-15",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Extensive rewrite of \"How do I delete a goal?\" given all the latest ins and outs, new images, nudges about contacting support, etc etc",
"u": ["https://twitter.com/beemuvi/status/1503882081243262977",
"https://help.beeminder.com/article/47-how-do-i-delete-a-goal"],
"d": "2022-03-04",
"t": "2022-03-15",
}, { // ------------------------------------------------------------------------
"x": "Help docs: More explanation/apologia in \"How do I delete my account?\" plus hovertext and keywords (hovertext and keywords go without saying from now on)",
"u": ["https://twitter.com/beemuvi/status/1504243494818222082",
"https://help.beeminder.com/article/48-how-do-i-delete-my-account"],
"d": "2022-03-07",
"t": "2022-03-16",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Updated the ones about the Android permanotification (for Beedroid) and TagTime and GTBee",
"u": ["https://twitter.com/beemuvi/status/1504245074502184966",
"https://help.beeminder.com/article/125-android-notification",
"https://help.beeminder.com/article/64-tagtime",
"https://help.beeminder.com/article/63-gtbee"],
"d": "2022-03-11",
"t": "2022-03-16",
}, { // ------------------------------------------------------------------------
"x": "Fixed tragicomically money-burning bug where we'd miss certain payment errors and neither charge you nor set the deadbeat flag. Emailed those affected. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1504596641558396928",
"https://github.com/beeminder/beeminder/issues/3032",
"https://github.com/beeminder/beeminder/issues/3032#issuecomment-1055813596",
"https://github.com/beeminder/beeminder/pull/3047", // rake task to send the emails
"https://github.com/beeminder/beeminder/pull/3033"], // PR for actually fixing the error
"d": "2022-03-01",
"t": "2022-03-17",
"c": "Fortunately quite rare. Emailed the people affected on Mar 4 (see next UVI) and let them know about the error, mostly in their favor unless w/in the last 30 days in which case we retried the charges even though that mostly deadbeated them. Keywords: Stripe error checking, error handling",
}, { // ------------------------------------------------------------------------
"x": "That #bugfix caused a new (ironically similar) bug with missing errors from PayPal charges. Also emailed everyone affected about the bank errors in their favor.",
"u": ["https://twitter.com/beemuvi/status/1504597040143106051",
"https://github.com/beeminder/beeminder/pull/3060",
"https://github.com/beeminder/beeminder/pull/3052"],
"d": "2022-03-14",
"t": "2022-03-17",
"c": "This fix took two attempts, deployed about a week apart, so could've theoretically been milked for more than one UVI",
}, { // ------------------------------------------------------------------------
"x": "We were failing silently if, when creating or updating a Beeminder OAuth client, you left out the 'http(s)://' part of your app's URL. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1504597221848743951",
"https://github.com/beeminder/beeminder/issues/3042",
"https://github.com/beeminder/beeminder/pull/3062",
"https://github.com/beeminder/beeminder/pull/3063",
"https://github.com/beeminder/beeminder/issues/2715"],
"d": "2022-03-16",
"c": "Could've milked this for two UVIs: first was adding an error banner on submit, then we made the field an html5 URL field to get validation in real time for free from the browser a la UVI#3986",
}, { // ------------------------------------------------------------------------
"x": "We moved the post-derail respite UI up, so it's right below the commitment dial",
"u": ["https://twitter.com/beemuvi/status/1504961492927410178",
"https://github.com/beeminder/beeminder/pull/3067",
"https://github.com/beeminder/beeminder/issues/259"],
"d": "2022-03-17",
"t": "2022-03-18",
}, { // ------------------------------------------------------------------------
"x": "Help docs: cleanup and copyediting and cruft-removal on 4 articles: lying to Beeminder, the akrasia horizon, Beeminder vs StickK, and beneficiaries",
"u": ["https://twitter.com/beemuvi/status/1506057016007036931",
"https://help.beeminder.com/article/34-cant-you-just-lie-about-your-data",
"https://help.beeminder.com/article/45-what-is-the-akrasia-horizon",
"https://help.beeminder.com/article/49-why-should-i-use-beeminder-over-stickk",
"https://help.beeminder.com/article/114-can-i-specify-a-beneficiary-for-my-derailments"],
"d": "2022-03-14",
"t": "2022-03-21",
}, { // ------------------------------------------------------------------------
"x": "Help docs: revamped the article on the Android app (aka Beedroid) including new screenshots",
"u": ["https://twitter.com/beemuvi/status/1506057147926286336",
"https://help.beeminder.com/article/62-android-app"],
"d": "2022-03-21",
"t": "2022-03-21",
}, { // ------------------------------------------------------------------------
"x": "We finally added Clive and Nathan, both helping us with support, to https://www.beeminder.com/aboutus !",
"u": ["https://twitter.com/beemuvi/status/1506419658143924229",
"https://github.com/beeminder/beeminder/issues/2978",
"https://github.com/beeminder/beeminder/pull/3071"],
"d": "2022-03-22",
"t": "2022-03-22",
}, { // ------------------------------------------------------------------------
"x": "Fixed a tiny typo with spacing in the new derailment notification emails when you have no-excuses mode turned on, plus made the timestamps less ugly",
"u": ["https://twitter.com/beemuvi/status/1506419889090621440",
"https://github.com/beeminder/beeminder/issues/3061",
"https://github.com/beeminder/beeminder/pull/3070"],
"d": "2022-03-22",
"t": "2022-03-22",
}, { // ------------------------------------------------------------------------
"x": "Closed an ugly loophole where you could immediately end a goal by causing an error. Now we show the error in place of the restart/archive buttons. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1506782429087891458",
"https://github.com/beeminder/beeminder/issues/419",
"https://github.com/beeminder/beeminder/pull/3073"],
"d": "2022-03-23",
"t": "2022-03-23",
"c": "See also follow-on milking UVI. Keywords: BB errors, Beebrain error, error text in the sidebar",
}, { // ------------------------------------------------------------------------
"x": "We no longer show a hideous overflowing error message in the graph header. The graph itself still shows the error message so the header can just say 'error'.",
"u": ["https://twitter.com/beemuvi/status/1506782552488484864",
"https://github.com/beeminder/beeminder/issues/3074",
"https://github.com/beeminder/beeminder/pull/3072"],
"d": "2022-03-23",
"t": "2022-03-23",
}, { // ------------------------------------------------------------------------
"x": "Something changed with browsers and the icons in header of the blog got hideously oversized. #bugfix (also nixed the old Google+ icon while we were at it!)",
"u": ["https://twitter.com/beemuvi/status/1507141851207200775",
"https://github.com/beeminder/beeminder/issues/3075"],
"d": "2022-03-24",
"t": "2022-03-24",
"c": "#regression aka zombie",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Added clarifications, further instructions, etc to the articles on new goal defaults, profile info, and goal settings",
"u": ["https://twitter.com/beemuvi/status/1507142555552477185",
"https://help.beeminder.com/article/111-new-goal-defaults",
"https://help.beeminder.com/article/109-profile-information",
"https://help.beeminder.com/article/106-goal-settings"],
"d": "2022-03-24",
"t": "2022-03-24",
}, { // ------------------------------------------------------------------------
"x": "Additional cute errorcopy (emoji and all) pointing you at the humans of support when your bright red line is borked. Kinda part of UVI#4082.",
"u": ["https://twitter.com/beemuvi/status/1507505782601834499",
"https://github.com/beeminder/beeminder/issues/419",
"https://github.com/beeminder/beeminder/pull/3073"],
"d": "2022-03-23",
"t": "2022-03-25",
"c": "Keywords: alien emoji, error that us poor bots can't dig ourselves out of, contact the humans",
}, { // ------------------------------------------------------------------------
"x": "Added a moving time metric for Strava. Previously if you chose \"duration\" it was total elapsed time of the workout. Now you can pick between either.",
"u": ["https://twitter.com/beemuvi/status/1507506322249420807",
"https://forum.beeminder.com/t/strava-integration-use-moving-time-instead-of-elapsed-time/4950/6",
"https://github.com/beeminder/beeminder/pull/3078",
"https://github.com/beeminder/beeminder/issues/500"],
"d": "2022-03-24",
"t": "2022-03-25",
}, { // ------------------------------------------------------------------------
"x": "A PayPal error caused us to fail inelegantly and stop charging anyone else. Oof. We caught up and then robusted things so no more such charge delays. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1508591329370009601",
"https://github.com/beeminder/beeminder/issues/3081"],
"d": "2022-03-28",
"t": "2022-03-28",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Revamped and expanded (and renamed, from \"Authorized applications\") the \"Apps & API\" article. Describes creating apps, mentions TaskRatchet, etc etc",
"u": ["https://twitter.com/beemuvi/status/1508591934289240065",
"https://help.beeminder.com/article/110-authorized-applications",
"https://help.beeminder.com/article/110-apps-and-api"],
"d": "2022-03-23",
"t": "2022-03-28",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Revamped and expanded the article on goal settings. Notes about IFTTT/Zapier, added missing section, removed stuff about fine print, etc",
"u": ["https://twitter.com/beemuvi/status/1508954431936626692",
"https://help.beeminder.com/article/106-goal-settings"],
"d": "2022-03-24",
"t": "2022-03-29",
"c": "We don't really like calling it fine print (it can encourage an excuse-making mindset) and may change that field to just 'notes'",
}, { // ------------------------------------------------------------------------
"x": "Help docs: We made all the help docs be consistent about \"goalname\" vs \"goal name\" (the former is what we're going with!)",
"u": ["https://twitter.com/beemuvi/status/1508954622207021058",
"https://help.beeminder.com"],
"d": "2022-03-29",
"t": "2022-03-29",
}, { // ------------------------------------------------------------------------
"x": "Help docs: minor improvements to the article on deadlines plus a smattering of typo fixes. HT @lady_alys",
"u": ["https://twitter.com/beemuvi/status/1509318495493795845",
"https://help.beeminder.com/article/14-deadline"],
"d": "2022-03-28",
"t": "2022-03-30",
}, { // ------------------------------------------------------------------------
"x": "Help docs: For the graph editor article, pointed more firmly to the visual graph editor, replaced a screenshot, minor copy-editing, etc",
"u": ["https://twitter.com/beemuvi/status/1509319092687147010",
"https://help.beeminder.com/article/99-graph-editor"],
"d": "2022-03-29",
"t": "2022-03-30",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Copyediting and working in mention of Zeno's paradox to the article on reminders, plus the term \"leeway\" for the one on safety buffer",
"u": ["https://twitter.com/beemuvi/status/1509681923844567040",
"https://help.beeminder.com/article/101-reminders",
"https://help.beeminder.com/article/55-what-is-safety-buffer"],
"t": "2022-03-31",
}, { // ------------------------------------------------------------------------
"x": "Help docs: New screenshot and all new text for the help page on post-derail respite (previously known as \"mercy\")",
"u": ["https://twitter.com/beemuvi/status/1509682224265793544",
"https://help.beeminder.com/article/18-respite"],
"d": "2022-03-31",
"t": "2022-03-31",
}, /* --------------------------------------------------------- end 2022mar */ ]
const batch2022apr = [{
"x": "Help docs: Added a caveat about autodata to the article on Data Source, plus a link to Boss as a Service",
"u": ["https://twitter.com/beemuvi/status/1510022691620737026",
"https://help.beeminder.com/article/103-data-source"],
"d": "2022-04-01",
"t": "2022-04-01",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Rewrote parts of the article on what counts as a legit derailment to mention illness, plug no-excuses mode harder, etc",
"u": ["https://twitter.com/beemuvi/status/1510022837200859139",
"https://help.beeminder.com/article/16-what-is-a-legit-derailment"],
"d": "2022-04-01",
"t": "2022-04-01",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Edits to the article on PPRs to mitigate confusion and not saying anything that sounded like 'fake data'",
"u": ["https://twitter.com/beemuvi/status/1511127340713082881",
"https://help.beeminder.com/article/157-pessimistic-presumptive-reports"],
"d": "2022-04-01",
"t": "2022-04-04",
}, { // ------------------------------------------------------------------------
"x": "Added Haitian Creole as a language to our @duolingo autodata integration!",
"u": ["https://twitter.com/beemuvi/status/1511128534223233024",
"https://github.com/beeminder/beeminder/issues/3091"],
"d": "2022-04-04",
"t": "2022-04-04",
}, { // ------------------------------------------------------------------------
"x": "Yet-another-bug (see UVI#4075) with handling failed payments from PayPal was causing us to repeatedly email the user about the failed charge attempt. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1511487766147653635",
"https://github.com/beeminder/beeminder/issues/3081",
"https://github.com/beeminder/beeminder/pull/3083"],
"d": "2022-03-29",
"t": "2022-04-05",
"c": "Behind the scenes notes: The Braintree gem doesn't do serialization as JSON for high-level objects (\"we want to keep the library light\"), so serialize to YAML and pass the string to our airlert method and fix the lancemcdoogal error",
}, { // ------------------------------------------------------------------------
"x": "We made UVI#3947 be true for 5 more autodata integrations: the logo links to the data source for Clozemaster, CodeCombat, Draftin, Duolingo, and Fitbit",
"u": ["https://twitter.com/beemuvi/status/1511494285773840385",
"https://github.com/beeminder/beeminder/pull/3098"],
"d": "2022-04-05",
"t": "2022-04-05",
"c": "Also freeCodeCamp but that's only soft-launched",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Revamped the help page for the iOS app with updated screenshots and instructions",
"u": ["https://twitter.com/beemuvi/status/1511854850975289350",
"https://help.beeminder.com/article/60-ios-app"],
"d": "2022-04-06",
"t": "2022-04-06",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Revamped the quite out of date help page for the Withings integration with new screenshots, instructions, tweaks to the answers to questions, etc.",
"u": ["https://twitter.com/beemuvi/status/1511854969338556417",
"https://help.beeminder.com/article/90-withings"],
"d": "2022-04-06",
"t": "2022-04-06",
}, { // ------------------------------------------------------------------------
"x": "Phased out all coupon codes / percent discounts for Beemium plans and emailed everyone affected. No such thing as paying less than full price for Beemium now!",
"d": "2022-02-20",
"t": "2022-04-07",
"u": ["https://twitter.com/beemuvi/status/1512188861513838592",
"https://github.com/beeminder/beeminder/issues/2701"],
"c": "Note that UVI#3996 was just expiring the coupon links so no new coupons could be applied; this one is about rescinding existing coupons for Beemium folks.",
}, { // ------------------------------------------------------------------------
"x": "Help docs: the graph settings page got new screenshots (the old ones were from the yellow brick road days!) plus other tweaks like keywords",
"u": ["https://twitter.com/beemuvi/status/1512189031681073154",
"https://help.beeminder.com/article/105-graph-settings"],
"d": "2022-04-07",
"t": "2022-04-07",
}, { // ------------------------------------------------------------------------
"x": "If your start & finish dates were in the past in the megabreak URL, we'd say (wrongly/confusingly) \"your finish date has to be after your start date\" #bugfix",
"u": ["https://twitter.com/beemuvi/status/1512565677650956288",
"https://github.com/beeminder/beeminder/issues/2949#issuecomment-1092255941",
"https://github.com/beeminder/beeminder/pull/3108"],
"d": "2022-04-07",
"t": "2022-04-08",
"c": "See UVI#3944",
}, { // ------------------------------------------------------------------------
"x": "When the deadline hits and until we redraw the graph for the new day, we now show a banner on your goal page to warn you that things may be briefly out of sync",
"u": ["https://twitter.com/beemuvi/status/1512565813324107777",
"https://github.com/beeminder/beeminder/issues/532",
"https://github.com/beeminder/beeminder/pull/3109"],
"d": "2022-04-08",
"t": "2022-04-08",
"c": "I.e., a persistent/cryptic banner ('A new day has dawned') is shown during the eke window. A baremin / worse-is-better stab at helping with user-confusion around non-dynamic goal pages.",
}, { // ------------------------------------------------------------------------
"x": "We nixed signup/login via Facebook and clarified that you can use the forgot-password link if you never had a password, cuz you'd previously used Facebook",
"u": ["https://twitter.com/beemuvi/status/1513663343810134016",
"https://github.com/beeminder/beeminder/issues/3056"],
"d": "2022-04-09",
"t": "2022-04-11",
"c": "Microcopy: \"Forgot your password? (or never got one to begin with?)\"",
}, { // ------------------------------------------------------------------------
"x": "Our new banner alerting you of goals out of sync was buggily showing up permanently on archived goals! #bugfix",
"u": ["https://twitter.com/beemuvi/status/1513667200426524674",
"https://github.com/beeminder/beeminder/issues/3113",
"https://github.com/beeminder/beeminder/pull/3114"],
"d": "2022-04-09",
"t": "2022-04-11",
"c": "Aka the new-day-has-dawned banner. See followup UVI for additional bugfix.",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Revamped out-of-date docs for the following autodata integrations: Draft, Fitbit, and Garmin",
"u": ["https://twitter.com/beemuvi/status/1516564249157414912",
"https://help.beeminder.com/article/121-draft",
"https://help.beeminder.com/article/11-fitbit",
"https://help.beeminder.com/article/74-garmin"],
"d": "2022-04-18",
"t": "2022-04-19",
}, { // ------------------------------------------------------------------------
"x": "Help docs: More changes and improvements to the following autodata integrations: Apple Health (new screenshots), Complice (new FAQ item), Focusmate (lots)",
"u": ["https://twitter.com/beemuvi/status/1516564418183630853",
"https://help.beeminder.com/article/61-apple-health",
"https://help.beeminder.com/article/85-complice",
"https://help.beeminder.com/article/278-focusmate"],
"d": "2022-04-18",
"t": "2022-04-19",
}, { // ------------------------------------------------------------------------
"x": "Our 'new day has dawned' banner was also buggily showing up at the wrong time on certain goals with non-midnight deadlines (shaking my fist: timezones!) #bugfix",
"u": ["https://twitter.com/beemuvi/status/1516920396557156353",
"https://github.com/beeminder/beeminder/issues/3113",
"https://github.com/beeminder/beeminder/pull/3128"],
"d": "2022-04-11",
"t": "2022-04-20",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Overhaul of our Duolingo integration help page, new screenshots, troubleshooting, reordered questions, etc",
"u": ["https://twitter.com/beemuvi/status/1516921216291852288",
"https://help.beeminder.com/article/80-duolingo"],
"d": "2022-04-18",
"t": "2022-04-20",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Updated screenshots for our GitHub integration article, plus new clarifications about permissions in the Garmin article",
"u": ["https://twitter.com/beemuvi/status/1517291718554521600",
"https://help.beeminder.com/article/81-github",
"https://help.beeminder.com/article/74-garmin"],
"d": "2022-04-19",
"t": "2022-04-21",
}, { // ------------------------------------------------------------------------
"x": "Added some missing page titles (the text the browser displays on the page's tab) for things like the premium page, the featured gallery, etc",
"u": ["https://twitter.com/beemuvi/status/1517292582505570309",
"https://github.com/beeminder/beeminder/issues/3116",
"https://github.com/beeminder/beeminder/pull/3161"],
"d": "2022-04-20",
"t": "2022-04-21",
}, { // ------------------------------------------------------------------------
"x": "Released a new version of our Beeminder gem that works with Ruby 3. HT @t_a_w",
"u": ["https://twitter.com/beemuvi/status/1517635008915140608",
"https://dev.to/taw/open-source-adventures-episode-37-fixing-beeminder-gem-to-work-with-ruby-3-d1c",
"https://github.com/beeminder/beeminder-gem/issues/31"],
"d": "2022-04-19",
"t": "2022-04-22",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Clarifications on our Gmail integration page + tweaks and a new intro on our IFTTT integration page",
"u": ["https://twitter.com/beemuvi/status/1517644057723367424",
"https://help.beeminder.com/article/86-ifttt",
"https://help.beeminder.com/article/82-gmail"],
"d": "2022-04-21",
"t": "2022-04-22",
}, { // ------------------------------------------------------------------------
"x": "Help docs: new FAQ items on our Habitica integration page plus revamped the set-up instructions, new screenshots, etc",
"u": ["https://twitter.com/beemuvi/status/1518722444374118402",
"https://help.beeminder.com/article/83-habitica"],
"d": "2022-04-22",
"t": "2022-04-25",
}, { // ------------------------------------------------------------------------
"x": "We made our html page titles nice and consistent (like always including the word 'beeminder')",
"u": ["https://twitter.com/beemuvi/status/1518741571172069376",
"https://forum.beeminder.com/t/is-there-a-good-reason-for-not-having-beeminder-in-the-website-title/10274",
"https://github.com/beeminder/beeminder/issues/2699"],
"d": "2022-02-25",
"t": "2022-02-25",
}, { // ------------------------------------------------------------------------
"x": "Turns out @stripe uses en dashes in their html titles so now we do too. The Goldilocks of dash lengths?",
"u": ["https://twitter.com/beemuvi/status/1519103748487860224",
"https://github.com/beeminder/beeminder/issues/3116"],
"d": "2022-04-26",
"t": "2022-04-26",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Improved the SMS bot page a bit and replaced the Jawbone integration page with notice that that thing is long dead",
"u": ["https://twitter.com/beemuvi/status/1519103872811208704",
"https://help.beeminder.com/article/112-sms",
"https://help.beeminder.com/article/75-jawbone"],
"d": "2022-04-26",
"t": "2022-04-26",
}, { // ------------------------------------------------------------------------
"x": "Sad trombone: Misfit is defunct so we pulled them from the integrations gallery and updated the help docs, blog post, etc",
"u": ["https://twitter.com/beemuvi/status/1519466033932763136",
"https://help.beeminder.com/article/91-misfit",
"https://github.com/beeminder/beeminder/issues/1537"],
"d": "2022-04-27",
"t": "2022-04-27",
}, { // ------------------------------------------------------------------------
"x": "We fixed our meta tags and Open Graph blurbs so when you paste a link to Beeminder in places like Discord or Twitter you see something sane",
"u": ["https://twitter.com/beemuvi/status/1519466258378371072",
"https://github.com/beeminder/beeminder/issues/1866",
"https://github.com/beeminder/beeminder/pull/3181"],
"d": "2022-04-27",
"t": "2022-04-27",
}, { // ------------------------------------------------------------------------
"f": true,
"x": "Official @freeCodeCamp autodata integration! http://beeminder.com/freecodecamp",
"u": ["https://twitter.com/bmndr/status/1519753284994539522",
"https://github.com/beeminder/beeminder/issues/2782",
"https://blog.beeminder.com/freecodecamp/",
"https://beeminder.consider.it/freecodecamp-what-should-our-next-autodata-integration-be-92-19939"],
"d": "2022-04-27",
"t": "2022-04-28",
}, { // ------------------------------------------------------------------------
"x": "All the accoutrements for our freeCodeCamp integration: landing page, blog post, help docs, front page gallery",
"u": ["https://twitter.com/beemuvi/status/1521639469425651712",
"https://blog.beeminder.com/freecodecamp/"],
"t": "2022-05-03",
}, { // ------------------------------------------------------------------------
"x": "A bug w/ our freeCodeCamp integration that we fixed before [oops: after] official launch: opaque failure if you changed your username's case. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1521639469425651712",
"https://github.com/beeminder/beeminder/issues/3107",
"https://github.com/beeminder/beeminder/pull/3213",
"https://manifold.markets/dreev/will-there-be-any-bugs-in-beeminder"],
"t": "2022-05-03",
"d": "2022-05-04",
"c": "Oops, accidentally tweeted this before it was true! Was rectified first thing the next morning.",
}, { // ------------------------------------------------------------------------
"x": "Additional small fixes with meta tags / Open Graph like adding preview images for all integration landing pages",
"u": ["https://twitter.com/beemuvi/status/1519824757163585536",
"https://github.com/beeminder/beeminder/issues/1866",
"https://github.com/beeminder/beeminder/pull/3181"],
"t": "2022-04-28",
}, { // ------------------------------------------------------------------------
"x": "Also the link previews for goal pages now (always) include a thumbnail of your graph plus username/goalname instead of just goalname",
"u": ["https://twitter.com/beemuvi/status/1519825324283899904",
"https://github.com/beeminder/beeminder/issues/1866",
"https://github.com/beeminder/beeminder/pull/3181"],
"t": "2022-04-28",
"c": "They had to follow a redirect before which wasn't so robust though we're unclear on how often that failed",
}, { // ------------------------------------------------------------------------
"x": "Under certain rare circumstances you could zoom a graph way too far on the y-axis and see the red line as a hideous huge red square. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1520185006932471808",
"https://github.com/beeminder/road/issues/241"],
"d": "2022-04-29",
"t": "2022-04-29",
}, { // ------------------------------------------------------------------------
"x": "Help docs: New screenshots and mild copyediting on our RescueTime page plus a placeholder on our Slackbot page about broken reminders (!)",
"u": ["https://twitter.com/beemuvi/status/1520185089535406080",
"https://help.beeminder.com/article/76-rescuetime",
"https://help.beeminder.com/article/116-slack"],
"d": "2022-04-29",
"t": "2022-04-29",
}, /* --------------------------------------------------------- end 2022apr */ ]
const batch2022may = [{
"x": "Graphs no longer show ugly non-monotone guiding lines on do-less goals with weird jumps in the bright red line. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1521278234695856129",
"https://github.com/beeminder/road/issues/205"],
"d": "2022-05-02",
"t": "2022-05-02",
}, { // ------------------------------------------------------------------------
"x": "Replaced our moribund Instagram in the page footer (UVI#4040) with our very not-moribund GitHub",
"u": ["https://twitter.com/beemuvi/status/1522364189741703169",
"https://github.com/beeminder/beeminder/issues/2972",
"https://github.com/beeminder/beeminder/pull/3172"],
"d": "2022-04-25",
"t": "2022-05-05",
"c": "In the tweeted version we forgot about UVI#4040. Fortunately adding GitHub makes it its own UVI regardless!",
}, { // ------------------------------------------------------------------------
"x": "The undo button in the sandbox tab of graph.beeminder.com wasn't working. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1522722251774193664",
"https://github.com/beeminder/road/issues/193"],
"t": "2022-05-06",
}, { // ------------------------------------------------------------------------
"x": "We had broken graph.beeminder.com/sandbox #bugfix and we did an important SEO thing (rel-canonical for the different URLs for beeminder.com/home )",
"u": ["https://twitter.com/beemuvi/status/1523775093142261760",
"https://github.com/beeminder/beeminder/issues/440",
"https://github.com/beeminder/road/commit/f5ef440143b10fc002fd112a173dca2b3d4e773c"],
"d": "2022-05-03",
"t": "2022-05-09",
"c": "Probably would be legit to count those as distinct UVIs but the SEO thing is questionably user-visible so we went with a two-for-one. The canonical URL for the front page is now beeminder.com/home but if you're not logged in then just beeminder.com will also show that page, and it turns out to be important to tell search engines / crawlers which URL is the canonical one so it doesn't seem like there are two distinct web pages that happen to have identical content. Now that I spell that out it seems more legit as a user-visible thing, just not so much end-user-visible maybe?",
}, { // ------------------------------------------------------------------------
"x": "We're migrating to a new email service provider and managed to break the ability to reply to beemails for some people. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1524173220705759233",
"https://github.com/beeminder/beeminder/issues/3219"],
"d": "2022-05-05",
"t": "2022-05-10",
"c": "Mailgun to SendGrid, setting the Reply-To etc.",
}, { // ------------------------------------------------------------------------
"f": true,
"x": "We (Uluc) revamped the moving average line: it's now an acausal filter and doesn't lag behind your data when you're trending in a consistent direction #beebrain",
"u": ["https://twitter.com/beemuvi/status/1524539001939513345",
"https://github.com/beeminder/road/issues/152"],
"d": "2022-05-11",
"t": "2022-05-11",
}, { // ------------------------------------------------------------------------
"f": true,
"x": "Also we (still Uluc) revamped the aura (blue-green swath) in a similar way. No more dumb polynomial fit!",
"u": ["https://twitter.com/beemuvi/status/1524899211019333632",
"https://github.com/beeminder/road/issues/152",
"https://github.com/beeminder/road/pull/260"],
"d": "2022-05-11",
"t": "2022-05-12",
}, { // ------------------------------------------------------------------------
"x": "Dumb #regression from UVI#4017 on our Trello autodata integration goal creation page: \"every week I commit to ___ every day\" which was silly/wrong. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1524899524057001985",
"https://github.com/beeminder/beeminder/issues/3230"],
"d": "2022-05-11",
"t": "2022-05-12",
"c": "Regression aka zombie. Now says 'I commit to move at least ___ cards per day'",
}, { // ------------------------------------------------------------------------
"x": "Another #bugfix with freeCodeCamp username casing: if you had a camelCased username, we'd fetch your initial points fine but then fail to fetch them ever again!",
"u": ["https://twitter.com/beemuvi/status/1525258118233411585",
"https://github.com/beeminder/beeminder/issues/3107#issuecomment-1121427073",
"https://github.com/beeminder/beeminder/pull/3228"],
"d": "2022-05-09",
"t": "2022-05-13",
}, { // ------------------------------------------------------------------------
"x": "Help docs: New screenshots for RescueTime and Runkeeper and Skritter (and small copyedits on all of those)",
"u": ["https://twitter.com/beemuvi/status/1525259893535408128",
"https://help.beeminder.com/article/76-rescuetime",
"https://help.beeminder.com/article/77-runkeeper",
"https://help.beeminder.com/article/89-skritter"],
"d": "2022-05-03",
"t": "2022-05-13",
}, { // ------------------------------------------------------------------------
"x": "Help docs: New screenshots for Sleep as Android plus a new FAQ item about why you have to pay for their cloud service for this integration to work",
"u": ["https://twitter.com/beemuvi/status/1526345053559398401",
"https://help.beeminder.com/article/84-sleep-as-android"],
"d": "2022-05-04",
"t": "2022-05-16",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Added new screenshots to our Todoist page and replaced an out-of-date one on our Strava page",
"u": ["https://twitter.com/beemuvi/status/1526345226524057600",
"https://help.beeminder.com/article/79-todoist",
"https://help.beeminder.com/article/281-strava"],
"d": "2022-05-06",
"t": "2022-05-16",
}, { // ------------------------------------------------------------------------