-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuvis2023.js
2864 lines (2852 loc) · 188 KB
/
uvis2023.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 batch2023jan = [{
}, { // ------------------------------------------------------------------------
"x": "The Metaminder integration was missing datapoint info in the comment of the meta datapoints. #bugfix HT @lady_alys",
"u": ["https://twitter.com/beemuvi/status/1610439647041294337",
"https://forum.beeminder.com/t/beeminder-push-to-beeminder-aka-rudimentary-meta-integration-aka-disintermediate-ifttt-for-foo-days-goals/10693/7?u=dreev",
"https://github.com/beeminder/beeminder/issues/3944",
"https://github.com/beeminder/beeminder/pull/3945"],
"d": "2023-01-01",
"t": "2023-01-03",
}, { // ------------------------------------------------------------------------
"x": "Our Strava integration started using the current date instead of the event date when adding datapoints. #bugfix #zombie",
"u": ["https://twitter.com/beemuvi/status/1610440458496540672",
"https://github.com/beeminder/beeminder/issues/3935",
"https://github.com/beeminder/beeminder/pull/3937"],
"d": "2023-01-02",
"t": "2023-01-03",
}, { // ------------------------------------------------------------------------
"x": "Our webhook callback JSON now includes all the datapoint parameters documented at https://api.beeminder.com/#datapoint",
"u": ["https://twitter.com/beemuvi/status/1610444018881810433",
"https://github.com/beeminder/beeminder/issues/2007",
"https://github.com/beeminder/beeminder/pull/3945"],
"d": "2023-01-01",
"t": "2023-01-03",
}, { // ------------------------------------------------------------------------
"x": "UVI#4339 broke how we displayed \"Project Euler\" and in fact made it impossible to load Project Euler goal pages altogether briefly. #bugfix #zombie",
"u": ["https://twitter.com/beemuvi/status/1610445380055093251",
"https://github.com/beeminder/beeminder/issues/3932",
"https://github.com/beeminder/beeminder/pull/3933"],
"d": "2022-12-28",
"t": "2022-01-03",
}, { // ------------------------------------------------------------------------
"x": "January special: we bumped the free goal limit on the free plan from 3 to 4 goals",
"u": ["https://twitter.com/beemuvi/status/1611164969818820608",
"https://forum.beeminder.com/t/a-newbees-guide-to-beeminding-weight-now-with-meta-minding/10705",
"https://github.com/beeminder/beeminder/pull/3949"],
"d": "2023-01-01",
"t": "2023-01-05",
"c": "As a little commitment device for ourselves, we're not undoing that until we deploy a related UVI, cuz a temporary increase in the goal limit is too cheap to count! PS: And done. It was the parceling out goals sting-ily feature, UVI#4447.",
}, { // ------------------------------------------------------------------------
"x": "Our stalwart integration partner, Draft, is sadly shutting down. We emailed those affected, converted their goals to manual, and removed Draft from the gallery.",
"u": ["https://twitter.com/beemuvi/status/1611164335686184964",
"https://forum.beeminder.com/t/the-state-of-draft/10366/7?u=dreev",
"https://github.com/beeminder/beeminder/issues/3871",
"https://github.com/beeminder/beeminder/pull/3962"],
"t": "2023-01-05",
}, { // ------------------------------------------------------------------------
"x": "We changed the default end date of new goals from \"now + 10 years\" to \"2099-12-31\"",
"u": ["https://twitter.com/beemuvi/status/1611524568799408134",
"https://manifold.markets/dreev/beeminder-2099",
"https://github.com/beeminder/beeminder/issues/3570"],
"d": "2023-01-05",
"t": "2023-01-06",
}, { // ------------------------------------------------------------------------
"x": "Changing the end date to 2099 caused a regression: turns out we weren't letting you change graphs with red lines ending after the year 2038! #bugfix #zombie",
"u": ["https://twitter.com/beemuvi/status/1611524679021506561",
"https://github.com/beeminder/beeminder/issues/3977"],
"d": "2023-01-06",
"t": "2023-01-06",
}, { // ------------------------------------------------------------------------
"x": "Turns out our own bmndr.co/aboutus page was not robust to graph generation errors in our meta graphs and the whole page was briefly broken! #bugfix",
"u": ["https://twitter.com/beemuvi/status/1612609345270972417",
"https://github.com/beeminder/beeminder/issues/3981",
"https://github.com/beeminder/beeminder/pull/4002"],
"d": "2023-01-07",
"t": "2023-01-09",
"c": "This also made broken goals say 'uncountable', but we failed to mention that.",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Revamp of the article about changing your goal's pledge, emphasizing both increases and decreases, more on step-downs and short-circuiting, etc",
"u": ["https://help.beeminder.com/article/21-can-i-increase-or-decrease-the-pledge-on-my-goal",
"https://twitter.com/beemuvi/status/1612610624286261249"],
"d": "2022-12-30",
"t": "2023-01-09",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Clarified about different pledge caps in the article about that, other clarifications in the one about pledgeless goals, plus tweaks to 4 others",
"u": ["https://twitter.com/beemuvi/status/1612974703328780288",
"https://help.beeminder.com/article/22-can-i-limit-how-high-my-pledge-gets",
"https://help.beeminder.com/article/23-can-i-have-goals-without-pledges",
"https://help.beeminder.com/article/24-how-do-i-manage-my-subscription",
"https://help.beeminder.com/article/25-how-do-auto-canceling-subscriptions-work",
"https://help.beeminder.com/article/26-what-if-i-buy-one-plan-and-change-my-mind",
"https://help.beeminder.com/article/27-what-payment-methods-are-available"],
"d": "2023-01-10",
"t": "2023-01-10",
}, { // ------------------------------------------------------------------------
"x": "Help docs: New article about when charges actually happen",
"u": ["https://twitter.com/beemuvi/status/1612974933407326210",
"https://help.beeminder.com/article/324-when-do-i-pay"],
"d": "2023-01-09",
"t": "2023-01-10",
}, { // ------------------------------------------------------------------------
"x": "The link to data source on Duolingo autodata goals is now more direct, going straight to the page showing your language courses and XP totals",
"u": ["https://twitter.com/beemuvi/status/1613333957663424513",
"https://github.com/beeminder/beeminder/issues/3995",
"https://github.com/beeminder/beeminder/pull/3996"],
"d": "2023-01-11",
"t": "2023-01-11",
}, { // ------------------------------------------------------------------------
"x": "You can now see what language you're beeminding and your Duolingo username in the Beeminder goal settings and goal sidebar for your Duolingo autodata goals",
"u": ["https://twitter.com/beemuvi/status/1613334355405074433",
"https://github.com/beeminder/beeminder/issues/3287",
"https://github.com/beeminder/beeminder/issues/3994",
"https://github.com/beeminder/beeminder/pull/3996"],
"d": "2023-01-11",
"t": "2023-01-11",
}, { // ------------------------------------------------------------------------
"x": "We changed our @focusmate integration to ignore sessions you scheduled but never joined. Fair, right? We emailed all affected users to warn them of the change!",
"u": ["https://twitter.com/beemuvi/status/1613665977211965442",
"https://github.com/beeminder/beeminder/issues/3286",
"https://github.com/beeminder/beeminder/issues/3614",
"https://github.com/beeminder/beeminder/pull/3636"],
"d": "2023-01-10",
"t": "2023-01-12",
}, { // ------------------------------------------------------------------------
"x": "To settle a years-long debate and secure world peace, we added the date and version of the latest deploy to the footer of the Beeminder website. #thanksobama",
"u": ["https://twitter.com/beemuvi/status/1613694704000069639",
"https://github.com/beeminder/beeminder/issues/4007",
"https://github.com/beeminder/beeminder/pull/4008"],
"d": "2023-01-12",
"t": "2023-01-12",
}, { // ------------------------------------------------------------------------
"x": "Fixed some ambiguous webcopy on the newbee empty-gallery page: There's a one-week delay to make your goal easier -> Making your goal easier has a one-week delay",
"u": ["https://twitter.com/beemuvi/status/1615146964714393600",
"https://github.com/beeminder/beeminder/issues/3048"],
"d": "2023-01-13",
"t": "2023-01-16",
}, { // ------------------------------------------------------------------------
"x": "We refined the urgency load metric to account for goals whose end date is approaching: max(0,min(7,m)-b) where m is days till your goal ends & b safety buffer",
"u": ["https://twitter.com/beemuvi/status/1615152380869496833",
"https://github.com/beeminder/beeminder/issues/3885"],
"d": "2023-01-16",
"t": "2023-01-16",
}, { // ------------------------------------------------------------------------
"x": "Urgency Load is now in the Stats tab! Both the contribution to urgency load from the specific goal as well as the total across all your goals",
"u": ["https://twitter.com/beemuvi/status/1615513894109470720",
"https://github.com/beeminder/beeminder/issues/3918"],
"d": "2023-01-16",
"t": "2023-01-17",
"c": "Also a link to the glossary",
}, { // ------------------------------------------------------------------------
"x": "Help docs: New article about force majeure aka \"an emergency came up and I can't do my goal!\"",
"u": ["https://twitter.com/beemuvi/status/1615516125584035840",
"https://help.beeminder.com/article/325-help-an-emergency-came-up-and-i-cant-do-my-goal"],
"d": "2023-01-17",
"t": "2023-01-17",
"c": "This is a common question/concern/panicked last minute email of desperation in support. I’ve done my best to balance “we don’t want to charge you if it’s not fair” with “hey, maybe you could actually do the goal” and “support may not instantly cancel the charge if there’s any doubt”, to avoid this provoking extra calls of non-legit that wouldn’t have happened otherwise, so actually the majority of the page is a gentle nudge to think again, with the practical info about how to call non-legit / ask for a break at the end (with an anchor link, so we can give someone the link straight to that part if need be).",
}, { // ------------------------------------------------------------------------
"x": "We added new support workerbees Joshua and Oliver to the About Us page!",
"u": ["https://twitter.com/beemuvi/status/1615875959726702592",
"https://github.com/beeminder/beeminder/issues/4023",
"https://github.com/beeminder/beeminder/pull/4021"],
"d": "2023-01-18",
"t": "2023-01-18",
}, { // ------------------------------------------------------------------------
"x": "As an add-on to UVI#4355 and because recent UVIs have been pretty huge, we'll count this: when/if we do break our meta graphs the hours will say \"uncountable\"",
"u": ["https://twitter.com/beemuvi/status/1615876567808499713",
"https://github.com/beeminder/beeminder/issues/3981"],
"t": "2023-01-18",
"c": "In the previous UVI we had it saying \"countless\" for both cases (no graph and broken graph). Now it's \"countless\" for no graph and \"uncountable\" for a broken graph.",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Our article on what is a derailment is now clear about the consequences of editing past data aka the red-yesterday criterion",
"u": ["https://twitter.com/beemuvi/status/1616237699492642817",
"https://help.beeminder.com/article/12-what-is-a-derailment"],
"d": "2023-01-18",
"t": "2023-01-19",
}, { // ------------------------------------------------------------------------
"x": "Help docs: clarifications and copyedits and links and such in 6 more articles",
"u": ["https://twitter.com/beemuvi/status/1616237816526299137",
"https://help.beeminder.com/article/28-how-do-i-update-my-payment-information",
"https://help.beeminder.com/article/324-when-do-i-pay",
"https://help.beeminder.com/article/30-what-happens-if-a-charge-fails",
"https://help.beeminder.com/article/244-premium-credit",
"https://help.beeminder.com/article/13-when-do-derailments-happen",
"https://help.beeminder.com/article/12-what-is-a-derailment"],
"d": "2023-01-19",
"t": "2023-01-19",
}, { // ------------------------------------------------------------------------
"x": "An obscure bug made it impossible (at least once!) to confirm your email address. We fixed it for the user affected and robusted it for the future. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1616596156322308096",
"https://github.com/beeminder/beeminder/issues/4013",
"https://github.com/beeminder/beeminder/pull/4014"],
"d": "2023-01-13",
"t": "2023-01-20",
"c": "Details: It was possible to get stuck in a state where you couldn't confirm your email address because you were missing the \"confirmation code\", and resending the \"please confirm your address\" email didn't regenerate a new one.",
}, { // ------------------------------------------------------------------------
"x": "We now make all users, even if you sign up via Google or other oAuth service, confirm their email at signup. Yes, we are recanting on UVI#4174!",
"u": ["https://twitter.com/beemuvi/status/1616597656301862913",
"https://github.com/beeminder/beeminder/issues/2095",
"https://github.com/beeminder/beeminder/pull/4025"],
"d": "2023-01-20",
"t": "2023-01-20",
"c": "We need to verify that we can send you mail *and you can receive it* before we start charging you money. Impetus for this was that the newbee welcome emails to support weren't getting sent for Google users and this was an expedient way to fix that. When we thought about it, we realized it was worth doing regardless.",
}, { // ------------------------------------------------------------------------
"x": "Microcopy update: Narthur found a spot in the ratchet UI where it referenced \"commit to\" instead of the \"commitment dial\", which is what we call it these days",
"u": ["https://twitter.com/beemuvi/status/1617685360271843328",
"https://github.com/beeminder/beeminder/issues/3915",
"https://github.com/beeminder/beeminder/pull/4032"],
"d": "2023-01-23",
"t": "2023-01-23",
}, { // ------------------------------------------------------------------------
"x": "We added some rate-limiting to fend off evil bots and buggy API clients but it was too aggressive and affected real users - whoopsies - so we backed it off",
"u": ["https://twitter.com/beemuvi/status/1617685551737626626",
"https://github.com/beeminder/beeminder/issues/1726",
"https://github.com/beeminder/beeminder/pull/4030",
"https://github.com/beeminder/beeminder/pull/4026",
"https://github.com/beeminder/beeminder/pull/4020"],
"d": "2023-01-23",
"t": "2023-01-23",
}, { // ------------------------------------------------------------------------
"x": "In freeCodeCamp goal setup if you only had a solitary point we said '1 points'. It now correctly pluralizes the word 'point', even if that's lonelier. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1618050201725566976",
"https://github.com/beeminder/beeminder/issues/3102",
"https://github.com/beeminder/beeminder/pull/4035"],
"d": "2023-01-24",
"t": "2023-01-24",
}, { // ------------------------------------------------------------------------
"x": "Help docs: revamp of our Apple Health integration article with new FAQ item, table of contents, anchor links, and other links",
"u": ["https://twitter.com/beemuvi/status/1618050366926630915",
"https://help.beeminder.com/article/61-apple-health"],
"d": "2023-01-23",
"t": "2023-01-24",
}, { // ------------------------------------------------------------------------
"x": "To guilt you into not abusing the loophole, the popup described in UVI#2221 now shows how many charges you've canceled via that feature",
"u": ["https://twitter.com/beemuvi/status/1618409366750900225",
"https://github.com/beeminder/beeminder/issues/3333",
"https://github.com/beeminder/beeminder/pull/4038"],
"d": "2023-01-25",
"t": "2023-01-25",
"c": "Aka 'selfcancels'",
}, { // ------------------------------------------------------------------------
"x": "We had a dumb ~bug in signup where you had to re-enter your payment info if you answered the captcha incorrectly. That's now smoothed out.",
"u": ["https://twitter.com/beemuvi/status/1618409469767200769",
"https://github.com/beeminder/beeminder/issues/3007",
"https://github.com/beeminder/beeminder/pull/4041",
"https://simplehash.dreev.repl.co/"],
"d": "2023-01-25",
"t": "2023-01-25",
"c": "We now validate the lame captcha in the frontend",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Official article for the official Boss as a Service integration",
"u": ["https://twitter.com/beemuvi/status/1618772709714071552",
"https://help.beeminder.com/article/329-boss-as-a-service-baas"],
"d": "2023-01-25",
"t": "2023-01-26",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Official article for the official RSSminder integration",
"u": ["https://twitter.com/beemuvi/status/1618772776592248832",
"https://help.beeminder.com/article/331-rssminder"],
"d": "2023-01-26",
"t": "2023-01-26",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Our help page for the Metaminder integration was more of a placeholder and pointer to the blog post till now. Now it spells it all out, FAQ, etc!",
"u": ["https://help.beeminder.com/article/323-metaminder",
"https://twitter.com/beemuvi/status/1619132818684248066"],
"d": "2023-01-27",
"t": "2023-01-27",
}, { // ------------------------------------------------------------------------
"x": "Derail and self-destructing PPR datapoints are now excluded from Metaminder",
"u": ["https://twitter.com/beemuvi/status/1620947528278736898",
"https://forum.beeminder.com/t/metaminder-psa-derail-and-ppr-datapoints-should-now-be-excluded/10792",
"https://github.com/beeminder/beeminder/issues/3939"],
"d": "2023-01-31",
"t": "2023-02-01",
"c": "Aka magic-meta or dummy datapoints",
}, /* --------------------------------------------------------- end 2023jan */ ]
const batch2023feb = [{
}, { // ------------------------------------------------------------------------
"x": "Doh, UVI#4378 accidentally made the captcha for the signup page be case-sensitive and trailing-whitespace-sensitive. #bugfix #zombie",
"u": ["https://twitter.com/beemuvi/status/1622758633728786432",
"https://github.com/beeminder/beeminder/issues/4052",
"https://github.com/beeminder/beeminder/pull/4053"],
"d": "2023-02-01",
"t": "2023-02-06",
}, { // ------------------------------------------------------------------------
"x": "Also the captcha is slightly stricter (it used to accept any string that had the answer as a substring) but now says if you're right in real time; much nicer!",
"u": ["https://twitter.com/beemuvi/status/1622760104880902144",
"https://github.com/beeminder/beeminder/issues/3007",
"https://github.com/beeminder/beeminder/pull/4041"],
"d": "2023-01-25",
"t": "2023-02-06",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Improvements to our Clozemaster and CodeCombat articles (new link, etc) and graveyard-ified the Draft article and pointed to URLminder",
"u": ["https://twitter.com/beemuvi/status/1623119695263186944",
"https://help.beeminder.com/article/290-clozemaster",
"https://help.beeminder.com/article/288-codecombat",
"https://help.beeminder.com/article/121-draft"],
"t": "2023-02-07",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Added new troubleshooting and a warning and an invitation to try a beta thing to our Focusmate article, plus tweaks to Complice, Duolingo, and Fitbit",
"u": ["https://twitter.com/beemuvi/status/1623119836728664064",
"https://help.beeminder.com/article/278-focusmate",
"https://help.beeminder.com/article/85-complice",
"https://help.beeminder.com/article/80-duolingo",
"https://help.beeminder.com/article/11-fitbit"],
"t": "2023-02-07",
}, { // ------------------------------------------------------------------------
"x": "Years ago we introduced a bug with smartphone app logins that spuriously percent-unencoded your password so certain passwords with %'s wouldn't work. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1623480161973993473",
"https://github.com/beeminder/beeminder/issues/4043",
"https://github.com/beeminder/beedroid/issues/18"],
"d": "2023-01-27",
"t": "2023-02-08",
}, { // ------------------------------------------------------------------------
"x": "That one was rare cuz any invalid %-encoding we'd just let thru. Then we \"fixed\" it to error out on invalid %-encodings & lots of folks couldn't log in. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1623480375384354816",
"https://github.com/beeminder/beeminder/issues/4043",
"https://github.com/beeminder/beedroid/issues/18"],
"d": "2023-01-27",
"t": "2023-02-08",
"c": "To be clear, the fix that was actually needed was to just not try to percent-unencode passwords in the first place. Which we now correctly do not do. And the #zombie was that initially we did some update that made us barf if your password had percents but wasn't a valid percent-encoding. Most users were unaffected by any of this because percent-unencoding most passwords is a no-op. Basically there are 3 types of password: (1) the majority that unencoding is a no-op for, (2) a tiny subset that happen to be valid percent-encodings and change when you unencode them, and (3) a larger set that are invalid percent-encodings. We used to let group 3 through unaffected, then we broke things for group 3, then we nixed the spurious unencoding altogether so everything works for all 3 groups! Phew!",
}, { // ------------------------------------------------------------------------
"x": "Next step from UVI#4042: If you have PayPal as a payment method but something else as your default, you can no longer switch your default back to PayPal",
"u": ["https://twitter.com/beemuvi/status/1623847268922327041",
"https://github.com/beeminder/beeminder/issues/2987"],
"d": "2023-02-09",
"t": "2023-02-09",
}, { // ------------------------------------------------------------------------
"x": "Help docs: copy tweaks, a new link, and some weasel-discouragement to the \"What is a legit derailment?\" and \"What happens when I derail?\" articles",
"u": ["https://twitter.com/beemuvi/status/1623848692091588610",
"https://help.beeminder.com/article/16-what-is-a-legit-derailment",
"https://help.beeminder.com/article/17-what-happens-when-i-derail"],
"d": "2023-01-23",
"t": "2023-02-09",
}, { // ------------------------------------------------------------------------
"x": "This specific thing isn't inherently an improvement but entails enough awesomesauce that it counts: we now redirect you to a Stripe page to add payment info",
"u": ["https://twitter.com/beemuvi/status/1624210199992225792",
"https://blog.beeminder.com/stripe/",
"https://github.com/beeminder/beeminder/issues/596",
"https://github.com/beeminder/beeminder/pull/4079"],
"d": "2023-02-09",
"t": "2023-02-10",
}, { // ------------------------------------------------------------------------
"f": true,
"x": "We now support 3D Secure payments!",
"u": ["https://twitter.com/beemuvi/status/1624210292740861952",
"https://blog.beeminder.com/stripe/",
"https://github.com/beeminder/beeminder/issues/596"],
"d": "2023-02-09",
"t": "2023-02-10",
}, { // ------------------------------------------------------------------------
"f": true,
"x": "We now support Google Pay!",
"u": ["https://twitter.com/beemuvi/status/1624210416493789185",
"https://blog.beeminder.com/stripe/",
"https://github.com/beeminder/beeminder/issues/596"],
"d": "2023-02-09",
"t": "2023-02-10",
}, { // ------------------------------------------------------------------------
"f": true,
"x": "We now support Apple Pay!",
"u": ["https://twitter.com/beemuvi/status/1624210466443763713",
"https://blog.beeminder.com/stripe/",
"https://github.com/beeminder/beeminder/issues/596"],
"d": "2023-02-09",
"t": "2023-02-10",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Formatting and more troubleshooting updates to GitHub, Gmail, Habitica, and IFTTT integration articles, and the graveyard pages for Misfit & Jawbone",
"u": ["https://twitter.com/beemuvi/status/1627834957430427653",
"https://help.beeminder.com/article/81-github",
"https://help.beeminder.com/article/82-gmail",
"https://help.beeminder.com/article/83-habitica",
"https://help.beeminder.com/article/86-ifttt",
"https://help.beeminder.com/article/75-jawbone",
"https://help.beeminder.com/article/91-misfit"],
"d": "2023-02-19",
"t": "2023-02-20",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Added a section to the article for our Make integration comparing it to Zapier and IFTTT",
"u": ["https://twitter.com/beemuvi/status/1627835181414612994",
"https://help.beeminder.com/article/318-make-formerly-integromat"],
"d": "2023-02-17",
"t": "2023-02-20",
}, { // ------------------------------------------------------------------------
"x": "Improved long-standing funkiness with post-log-in redirects, where sometimes we'd send you to a surprising location (eg, after adding a 3rd-party oAuth) #bugfix",
"u": ["https://twitter.com/beemuvi/status/1628145022708363264",
"https://github.com/beeminder/beeminder/issues/308",
"https://github.com/beeminder/beeminder/issues/4066",
"https://github.com/beeminder/beeminder/pull/4075"],
"d": "2023-02-07",
"t": "2023-02-21",
"c": "We use the session to store a return-to location, eg, before oAuthing a 3rd party for autodata, but we weren't always cleaning it up after we use it. Now we clean it up and, where appropriate, expire it after a time.",
}, { // ------------------------------------------------------------------------
"x": "Minor inconsistency in charge scheduling: normally 24 hours after premium renewal email but if you added a new payment method it would happen early. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1628148547324620808",
"https://github.com/beeminder/beeminder/issues/4083",
"https://github.com/beeminder/beeminder/pull/4084"],
"d": "2023-02-09",
"t": "2023-02-21",
"c": "This barely counts since we're kind of intentionally vague about when the charge is happening so there isn't exactly such a thing as 'early' here. But consistency is nice! Applies to any charge, so, e.g. API or Slack bot charges too.",
}, { // ------------------------------------------------------------------------
"x": "Regression introduced in December: Self-canceling a la UVI#2221 silently failed for charges created before UVI#4334. #bugfix slight #burglebug #zombie",
"u": ["https://twitter.com/beemuvi/status/1628539741112254464",
"https://github.com/beeminder/beeminder/issues/4027",
"https://github.com/beeminder/beeminder/pull/4081"],
"d": "2023-02-09",
"t": "2023-02-22",
"c": "Ie, the self-serve legit check feature silently failed if you tried to cancel a charge created before the switchover from Stripe::Charge to Stripe::PaymentIntents",
}, { // ------------------------------------------------------------------------
"x": "Fixed an anti-magic violation on the signup page: the error checking for email/username/CAPTCHA is now always displayed as soon as you start typing",
"u": ["https://twitter.com/beemuvi/status/1628539903440220162",
"https://github.com/beeminder/beeminder/issues/3710",
"https://github.com/beeminder/beeminder/pull/4085"],
"d": "2023-02-09",
"t": "2023-02-22",
"c": "As opposed to the convoluted thing it used to do that was like 'after you finish typing the full thing or once we've validated it once, then on every keystroke'. Death to if-statements!",
}, { // ------------------------------------------------------------------------
"x": "There's now a nice green halation on the fields of the signup form when what you've typed so far is valid",
"d": "2023-02-09",
"t": "2023-02-23",
"u": ["https://twitter.com/beemuvi/status/1628842878834446337",
"https://github.com/beeminder/beeminder/issues/3710",
"https://github.com/beeminder/beeminder/pull/4085"],
}, { // ------------------------------------------------------------------------
"x": "And the red halation for invalid input is no longer suppressed when the field is in focus. #bugfix",
"d": "2023-02-09",
"t": "2023-02-23",
"u": ["https://twitter.com/beemuvi/status/1628842979397091329",
"https://github.com/beeminder/beeminder/issues/3710",
"https://github.com/beeminder/beeminder/pull/4085"],
}, { // ------------------------------------------------------------------------
"x": "Also on the signup form: the red halation for the text area for what you intend to beemind was altogether missing. Now it's the same as everything else. #bugfix",
"d": "2023-02-09",
"t": "2023-02-23",
"u": ["https://twitter.com/beemuvi/status/1628843113350578176",
"https://github.com/beeminder/beeminder/issues/3710",
"https://github.com/beeminder/beeminder/pull/4085"],
}, { // ------------------------------------------------------------------------
"x": "The add-payment button would disable itself if anything in the signup form was filled out wrong, but not immediately re-enable itself when you fixed it. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1629282382292606977",
"https://github.com/beeminder/beeminder/issues/3710",
"https://github.com/beeminder/beeminder/pull/4085"],
"c": "Workaround was to first click somewhere outside the field you just fixed, but that was not very discoverable so we looked fairly broken",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Lots of improvements to our Pocket integration documentation including primer on Pocket and examples of beeminding it, new FAQ items, and more",
"u": ["https://twitter.com/beemuvi/status/1630366530314858499",
"https://help.beeminder.com/article/291-pocket"],
"d": "2023-02-21",
"t": "2023-02-27",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Intro blurbs, copy tweaks, standardization with other autodata integration articles, examples for Runkeeper, Project Euler, RescueTime, and RSSminder",
"u": ["https://twitter.com/beemuvi/status/1630366602251370496",
"https://help.beeminder.com/article/77-runkeeper",
"https://help.beeminder.com/article/292-project-euler",
"https://help.beeminder.com/article/76-rescuetime",
"https://help.beeminder.com/article/331-rssminder"],
"d": "2023-02-27",
"t": "2023-02-27",
}, { // ------------------------------------------------------------------------
"x": "Reformatted and shortened the CAPTCHA riddle instructions on the signup form",
"u": ["https://twitter.com/beemuvi/status/1630733363572277248",
"https://github.com/beeminder/beeminder/issues/3710",
"https://github.com/beeminder/beeminder/pull/4085"],
"t": "2023-02-28",
}, { // ------------------------------------------------------------------------
"f": true,
"x": "Gateway drug commitment device! Signing up for Beeminder now requires agreeing to get charged $5 if you don't create a goal within a week!",
"u": ["https://twitter.com/beemuvi/status/1630733486456975360",
"https://github.com/beeminder/beeminder/issues/3526",
"https://github.com/beeminder/beeminder/pull/4124"],
"d": "2023-02-28",
"t": "2023-02-28",
}, /* --------------------------------------------------------- end 2023feb */ ]
const batch2023mar = [{
}, { // ------------------------------------------------------------------------
"x": "Help docs: Added Google Pay and Apple Pay and 3D Secure to our article about payment methods",
"u": ["https://twitter.com/beemuvi/status/1631096180141850624",
"https://help.beeminder.com/article/27-what-payment-methods-are-available"],
"d": "2023-02-14",
"t": "2023-03-01",
}, { // ------------------------------------------------------------------------
"x": "We were inconsistent between the website and the forum on whether to call ourselves workerbees or worker bees. We're going with workerbees! HT @lady_alys",
"u": ["https://twitter.com/beemuvi/status/1631095919663017984",
"https://forum.beeminder.com"],
"d": "2023-01-27",
"t": "2023-03-01",
}, { // ------------------------------------------------------------------------
"x": "We increased the character limit for the intentions field on the signup form, plus all the new instructions/UI for the gateway drug commitment device",
"u": ["https://twitter.com/beemuvi/status/1631454764969111553",
"https://github.com/beeminder/beeminder/issues/3710",
"https://github.com/beeminder/beeminder/pull/4124"],
"d": "2023-02-28",
"t": "2023-03-02",
}, { // ------------------------------------------------------------------------
"x": "Critical regression with the gateway drug changes: your gallery view (as opposed to dashboard view) of your goals briefly gave a 500-error. #bugfix #zombie",
"u": ["https://twitter.com/beemuvi/status/1631454936348381187",
"https://github.com/beeminder/beeminder/issues/4129",
"https://github.com/beeminder/beeminder/pull/4130",
"https://github.com/beeminder/beeminder/pull/4124"],
"d": "2023-03-01",
"t": "2023-03-02",
}, { // ------------------------------------------------------------------------
"x": "There's a huge color-coded countdown on your empty dashboard page counting down to when you'll be charged if you don't create a goal!",
"u": ["https://twitter.com/beemuvi/status/1631820192753016833",
"https://github.com/beeminder/beeminder/issues/4082",
"https://github.com/beeminder/beeminder/pull/4124"],
"t": "2023-03-03",
"c": "Just for people who signed up since we added the gateway drug meta commitment device of course",
}, { // ------------------------------------------------------------------------
"x": "Fixed a bug with the \"create a new goal\" button getting off-center at small screen sizes, plus more copy tweaks/fixes on the empty dashboard page. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1631820452904710144",
"https://github.com/beeminder/beeminder/pull/4124"],
"d": "2023-02-28",
"t": "2023-03-03",
}, { // ------------------------------------------------------------------------
"x": "Updated the graph legend image for the swath-formerly-known-as-turquoise to be purple, and updated all mentions of turquoise to purple",
"u": ["https://twitter.com/beemuvi/status/1632903599192952832",
"https://github.com/beeminder/beeminder/issues/3273",
"https://github.com/beeminder/beeminder/pull/4101"],
"d": "2023-02-22",
"t": "2023-03-06",
}, { // ------------------------------------------------------------------------
"x": "Added a graph legend entry for the $$ and countdown watermarks that show up on the graph",
"u": ["https://twitter.com/beemuvi/status/1632903846325526528",
"https://github.com/beeminder/beeminder/issues/3530",
"https://github.com/beeminder/beeminder/pull/4101"],
"d": "2023-02-22",
"t": "2023-03-06",
}, { // ------------------------------------------------------------------------
"x": "Added a graph legend entry for the Jolly Roger that shows up on frozen graphs, like when you derail when the goal is scheduled to be archived",
"u": ["https://twitter.com/beemuvi/status/1633267177553006594",
"https://github.com/beeminder/beeminder/issues/3530",
"https://github.com/beeminder/beeminder/pull/4136"],
"t": "2023-03-07",
}, { // ------------------------------------------------------------------------
"x": "Finally changed all mentions of \"polynomial fit\" now that we're using an infinite-impulse-response filter instead",
"u": ["https://twitter.com/beemuvi/status/1633269388433555457",
"https://blog.beeminder.com/smooth/",
"https://help.beeminder.com/article/105-graph-settings",
"https://github.com/beeminder/beeminder/issues/3273",
"https://github.com/beeminder/beeminder/pull/4136",
"https://github.com/beeminder/beeminder/pull/4137"],
"d": "2023-03-07",
"t": "2023-03-07",
}, { // ------------------------------------------------------------------------
"x": "Oops, in the legend descriptions if you tried to click on one of the links, the whole description would switch state on you. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1633633638008115201",
"https://github.com/beeminder/beeminder/issues/3530",
"https://github.com/beeminder/beeminder/pull/4136"],
"t": "2023-03-08",
"c": "It still worked to click links, it would just also toggle the expanded/collapsed state.",
}, { // ------------------------------------------------------------------------
"x": "We made a bunch of copyedits and improvements to the graph legend (including a link to the glossary and marking the rosy line as deprecated)",
"u": ["https://twitter.com/beemuvi/status/1633634149717397505",
"https://github.com/beeminder/beeminder/issues/3530",
"https://github.com/beeminder/beeminder/pull/4136"],
"t": "2023-03-08",
"c": "Say graph instead of goal whenever it makes sense to, prose-tightening, anti-scarequotes, elaborate hovertext",
}, { // ------------------------------------------------------------------------
"x": "Added Forfeit and TaskRatchet and Complice to our FAQ (in case you're looking for commitment devices without data and graphs)",
"u": ["https://twitter.com/beemuvi/status/1633996475620524033",
"https://www.beeminder.com/faq",
"https://github.com/beeminder/beeminder/issues/4140"],
"d": "2023-03-07",
"t": "2023-03-09",
"c": "And huge thanks to Forfeit.app for putting us in their FAQ",
}, { // ------------------------------------------------------------------------
"x": "Fixed inconsistent links in our graph legends; they all open in a new tab now. Also made more improvements to the explanations there.",
"u": ["https://twitter.com/beemuvi/status/1633996660690026496",
"https://github.com/beeminder/beeminder/issues/4149"],
"d": "2023-03-09",
"t": "2023-03-09",
}, { // ------------------------------------------------------------------------
"x": "Regression from UVI#799 fixed: logging in with the wrong username/password actually tells you which was incorrect. #bugfix #zombie",
"u": ["https://mobile.twitter.com/beemuvi/status/1634353395271356418",
"https://github.com/beeminder/beeminder/issues/4064"],
"d": "2023-03-09",
"t": "2023-03-10",
"c": "At some point it started saying 'invalide username or password'. Black magic with Devise.",
}, { // ------------------------------------------------------------------------
"x": "Missed a couple spots in the graph legend: we now give the true story of the moving average and purple swath (IIR filter, etc) with links",
"u": ["https://mobile.twitter.com/beemuvi/status/1634353436908212225",
"https://github.com/beeminder/beeminder/issues/4155"],
"d": "2023-03-10",
"t": "2023-03-10",
}, { // ------------------------------------------------------------------------
"x": "Formatting/layout improvements to the signup form, lots of fussing with the webcopy, improved accessibility by adding labels to CAPTCHA and intentions fields",
"u": ["https://twitter.com/beemuvi/status/1635728473938628609",
"https://github.com/beeminder/beeminder/pull/4138"],
"d": "2023-03-07",
"t": "2023-03-14",
}, { // ------------------------------------------------------------------------
"x": "We added added a couple sentences of reassuring webcopy to the signup form about clicking the \"Add Your Payment Method\" button. Seems to be helping!",
"u": ["https://twitter.com/beemuvi/status/1636507548944838657",
"https://manifold.markets/dreev/should-beeminder-collect-payment-in",
"https://github.com/beeminder/beeminder/issues/4120",
"https://github.com/beeminder/beeminder/pull/4138"],
"d": "2023-03-07",
"t": "2023-03-16",
}, { // ------------------------------------------------------------------------
"x": "Added some cute placeholder text in the intentions field of the signup form. HT @shanaqui and Madge",
"u": ["https://twitter.com/beemuvi/status/1636859879074979840",
"https://github.com/beeminder/beeminder/issues/4144"],
"d": "2023-03-08",
"t": "2023-03-17",
"c": "About knitting party hats for bees. #gatewaydrug",
}, { // ------------------------------------------------------------------------
"x": "Fixed some microcopy in the ratchet UI that erroneously/outdatedly referred to \"the 'commit to' section\" instead of the commitment dial. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1636860191093460992",
"https://github.com/beeminder/beeminder/issues/3915"],
"d": "2023-03-11",
"t": "2023-03-17",
}, { // ------------------------------------------------------------------------
"x": "A regression from the Stripe upgrades: if you clicked the \"email my full pledge history\" button, it would sometimes silently fail! #bugfix #zombie",
"u": ["https://twitter.com/beemuvi/status/1637957264568107008",
"https://github.com/beeminder/beeminder/issues/4165",
"https://github.com/beeminder/beeminder/pull/4163"],
"d": "2023-03-16",
"t": "2023-03-20",
"c": "Sometimes = if you had any new charges since the PaymentIntents change circa December",
}, { // ------------------------------------------------------------------------
"x": "For the gateway drug meta commitment device, we now email you a day before we charge you the $5",
"u": ["https://twitter.com/beemuvi/status/1637957795957067776",
"https://github.com/beeminder/beeminder/issues/3526",
"https://github.com/beeminder/beeminder/pull/4160"], // related/umbrella gissue
"d": "2023-03-15",
"t": "2023-03-20",
"c": "Gateway reminder sweeper. Also the creation of the charge when the user signs up and agrees to the gateway drug commitment device, and canceling that charge when a goal is created.",
}, { // ------------------------------------------------------------------------
"x": "Oops, we had an off-by-one error on display of deadline times thanks to daylight savings time and a timezone library that got out of date. #bugfix #zombie",
"u": ["https://twitter.com/beemuvi/status/1638320780361736193",
"https://github.com/beeminder/beeminder/issues/4166"],
"d": "2023-03-17",
"t": "2023-03-21",
"c": "MomentJS timezones library",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Table of contents and other improvements to the articles for the Slack integration, Sleep as Android, SMS bot, Strava, TaskRatchet, and Toggl",
"u": ["https://twitter.com/beemuvi/status/1638322100590215170",
"https://help.beeminder.com/article/116-slack",
"https://help.beeminder.com/article/84-sleep-as-android",
"https://help.beeminder.com/article/112-sms",
"https://help.beeminder.com/article/281-strava",
"https://help.beeminder.com/article/289-taskratchet",
"https://help.beeminder.com/article/155-toggl"],
"d": "2023-03-09",
"t": "2023-03-21",
}, { // ------------------------------------------------------------------------
"x": "Help docs: New info about the StoryGraph integration (what happens if you add antedated data) and other improvements, and similar for Todoist and Trello",
"u": ["https://twitter.com/beemuvi/status/1638325793062522880",
"https://help.beeminder.com/article/300-the-storygraph",
"https://help.beeminder.com/article/79-todoist",
"https://help.beeminder.com/article/78-trello"],
"d": "2023-03-13",
"t": "2023-03-21",
}, { // ------------------------------------------------------------------------//TWEETED
"x": "Updated our use of Twilio's API. We were getting errors on some attempts to send SMSes, causing silent failure. Now we're getting no errors.",
"u": ["https://twitter.com/beemuvi/status/1638679764700651520",
"https://github.com/beeminder/beeminder/issues/857"],
"d": "2023-03-16",
"t": "2023-03-22",
"c": "We updated our Twilio gem and switched from the deprecated sms API endpoint to the new messages one. Seems that did the trick.",
}, { // ------------------------------------------------------------------------
"x": "Help docs: New details on \"What happens to an archived goal?\" plus standardization, TOC, etc on URLminder, Withings, and Zapier",
"u": ["https://twitter.com/beemuvi/status/1639054100653559808",
"https://help.beeminder.com/article/46-what-happens-to-an-archived-goal",
"https://help.beeminder.com/article/88-urlminder",
"https://help.beeminder.com/article/90-withings",
"https://help.beeminder.com/article/87-zapier"],
"d": "2023-03-22",
"t": "2023-03-23",
}, { // ------------------------------------------------------------------------
"x": "Help docs: New paragraph about what happens if, for example, you have a device failure and can't add data to a goal, in the \"How do I quit a goal?\" article",
"u": ["https://twitter.com/beemuvi/status/1639054203304951808",
"https://help.beeminder.com/article/44-how-do-i-quit-a-goal"],
"d": "2023-03-22",
"t": "2023-03-23",
}, { // ------------------------------------------------------------------------
"x": "Help docs: \"How do I delete a goal?\" now talks about how you can archive right away if you derail during the archive period, since that causes confusion",
"u": ["https://twitter.com/beemuvi/status/1639060678945427456",
"https://help.beeminder.com/article/47-how-do-i-delete-a-goal"],
"d": "2023-03-22",
"t": "2023-03-23",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Screenshots added to \"How do I delete my account?\" and signposted archiving and adding breaks",
"u": ["https://twitter.com/beemuvi/status/1639062084414771200",
"https://help.beeminder.com/article/48-how-do-i-delete-my-account"],
"d": "2023-03-23",
"t": "2023-03-23",
}, /* --------------------------------------------------------- end 2023mar */ ]
const batch2023apr = [{
}, { // ------------------------------------------------------------------------
"x": "A kind of obscure bug in the API that was affecting our Complice integration at least: API calls with long enough URLs would give 500-errors. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1644102283112886273",
"https://github.com/beeminder/beeminder/issues/4182",
"https://github.com/beeminder/beeminder/issues/4180"],
"d": "2023-03-24",
"t": "2023-04-06",
"c": "We saw this mostly with Complice because it passes in datapoint data, including comments, as URL parameters",
}, { // ------------------------------------------------------------------------
"x": "Help docs: New anti-cheating discussion in the \"Can't you just lie?\" article plus tweaks and a new link in two other articles",
"u": ["https://twitter.com/beemuvi/status/1644118033483567104",
"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"],
"d": "2023-03-28",
"t": "2023-04-06",
}, { // ------------------------------------------------------------------------
"x": "Our guestbot feature that lets Beemium users drop in on our internal dev chat broke due to some SSL thing a while back; we got it back up and running. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1644489833958748160",
"https://github.com/beeminder/guestbot",
"https://github.com/beeminder/beeminder/issues/4194"],
"d": "2023-04-07",
"t": "2023-04-07",
}, { // ------------------------------------------------------------------------
"x": "Help docs: More verbiage and a link to a blog post in the \"Can I specify a beneficiary?\" article plus links/tweaks in 5 other articles",
"u": ["https://twitter.com/beemuvi/status/1644490098845818880",
"https://help.beeminder.com/article/114-can-i-specify-a-beneficiary-for-my-derailments",
"https://help.beeminder.com/article/109-account-details",
"https://help.beeminder.com/article/110-apps-and-api",
"https://help.beeminder.com/article/106-goal-settings",
"https://help.beeminder.com/article/14-deadline",
"https://help.beeminder.com/article/102-privacy"],
"d": "2023-03-31",
"t": "2023-04-07",
}, { // ------------------------------------------------------------------------
"x": "Help docs: New article promulgating our derailing-is-not-failing philosophy",
"u": ["https://twitter.com/beemuvi/status/1645574957777432579",
"https://help.beeminder.com/article/335-derailing-is-not-failing"],
"d": "2023-03-30",
"t": "2023-04-10",
}, { // ------------------------------------------------------------------------
"x": "Help docs: More guidance on changing settings in the \"New Goal Defaults\" article, plus brief clarifications in the one on PPRs",
"u": ["https://twitter.com/beemuvi/status/1645575135037095937",
"https://help.beeminder.com/article/111-new-goal-defaults",
"https://help.beeminder.com/article/157-pessimistic-presumptive-reports"],
"d": "2023-04-10",
"t": "2023-04-10",
}, { // ------------------------------------------------------------------------
"x": "Added a blurb to the \"Wondering why?\" popup convincing you to add a payment method to remind you about the gateway drug commitment device",
"u": ["https://twitter.com/beemuvi/status/1645939194995539968",
"https://github.com/beeminder/beeminder/issues/4125"],
"d": "2023-04-11",
"t": "2023-04-11",
}, { // ------------------------------------------------------------------------
"x": "Fixed a weird typo in the error copy for creating callback loops with webhook URLs and copyedited it a bit. \"I can't let you do that, HAL...\" #bugfix #typo",
"u": ["https://twitter.com/beemuvi/status/1645939341984960512",
"https://github.com/beeminder/beeminder/issues/3920"],
"d": "2023-04-11",
"t": "2023-04-11",
}, { // ------------------------------------------------------------------------
"f": true,
"x": "Earn additional free goals every time you get stung!",
"u": ["https://twitter.com/beemuvi/status/1646299246969376768",
"https://github.com/beeminder/beeminder/issues/2993",
"https://github.com/beeminder/beeminder/pull/4202",
"http://doc.bmndr.co/stingily"],
"d": "2023-04-12",
"t": "2023-04-12",
}, { // ------------------------------------------------------------------------
"x": "Also we now show you your goal limit (aka glimit) in your account settings",
"u": ["https://twitter.com/beemuvi/status/1646300145192169473",
"https://github.com/beeminder/beeminder/issues/2993",
"https://github.com/beeminder/beeminder/pull/4202",
"http://doc.bmndr.co/stingily"],
"d": "2023-04-12",
"t": "2023-04-12",
}, { // ------------------------------------------------------------------------
"x": "Changed the webcopy for the paywall when you hit your goal limit in light of the new parceling-out-goals-sting-ily feature",
"u": ["https://twitter.com/beemuvi/status/1646658515417849856",
"https://github.com/beeminder/beeminder/issues/2993",
"https://github.com/beeminder/beeminder/pull/4202"],
"t": "2023-04-13",
}, { // ------------------------------------------------------------------------
"x": "We also made it so if for some reason we refund a pledge payment, we take back the free goal",
"u": ["https://twitter.com/beemuvi/status/1646658515417849856",
"https://github.com/beeminder/beeminder/issues/2993",
"https://github.com/beeminder/beeminder/pull/4202"],
"t": "2023-04-13",
}, { // ------------------------------------------------------------------------
"x": "More changes to the the paywall webcopy to keep pushing on derailing-it-is-nailing-it (plus a typo fix, and a moneybag emoji)",
"u": ["https://twitter.com/beemuvi/status/1647025761822572545",
"https://github.com/beeminder/beeminder/pull/4206"],
"d": "2023-04-14",
"t": "2023-04-14",
}, { // ------------------------------------------------------------------------
"x": "Help docs: new article about how many free goals you get, with screenshots and laying out the parceling-out-goals-sting-ily philosophy",
"u": ["https://twitter.com/beemuvi/status/1647026111426203649",
"https://help.beeminder.com/article/336-how-many-goals-can-i-make-for-free"],
"d": "2023-04-14",
"t": "2023-04-14",
}, { // ------------------------------------------------------------------------
"x": "Fixed a broken link in account settings that was meant to link to the blog post about parceling out goals sting-ily. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1648102208708427777",
"https://www.beeminder.com/settings/account#defaults",
"https://github.com/beeminder/beeminder/issues/2993",
"https://github.com/beeminder/beeminder/pull/4202",],
"t": "2023-04-17",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Clarifications and expanded copy in the Reminders article plus minor copy/formatting tweaks in 3 other articles",
"u": ["https://twitter.com/beemuvi/status/1648102325771460608",
"https://help.beeminder.com/article/101-reminders",
"https://help.beeminder.com/article/103-data-source",
"https://help.beeminder.com/article/104-supporters",
"https://help.beeminder.com/article/99-graph-editor"],
"d": "2023-04-17",
"t": "2023-04-17",
}, { // ------------------------------------------------------------------------
"x": "Our Duolingo integration briefly broke on Saturday and we were able to quickly fix it by spoofing a human-looking user-agent 😬 #bugfix #zombie",
"u": ["https://twitter.com/beemuvi/status/1648475101699137542",
"https://github.com/beeminder/beeminder/pull/4207"],
"d": "2023-04-15",
"t": "2023-04-18",
}, { // ------------------------------------------------------------------------
"x": "We finally nixed the auto-gimme-free feature from UVI#2018. Pressing the button to get extra free goals now always makes you go through a human.",
"u": ["https://twitter.com/beemuvi/status/1648475634967126019",
"https://github.com/beeminder/beeminder/issues/2993",
"https://github.com/beeminder/beeminder/pull/4202"],
"t": "2023-04-18",
"c": "Deployed as part of the sting-ily changes"
}, { // ------------------------------------------------------------------------
"x": "We now complain if you try to give us a malformed email address for many more ways of malforming an email address, like \"me@hotmail\" or \"bob@gmail..com\"",
"u": ["https://twitter.com/beemuvi/status/1648833922158174213",
"https://github.com/beeminder/beeminder/issues/4128",
"https://github.com/beeminder/beeminder/pull/4214"],
"d": "2023-04-18",
"t": "2023-04-19",
}, { // ------------------------------------------------------------------------
"x": "Cleaned up the UI copy for Post-Derail Respite, nixed some redundant labels, and are now consistent in calling it Post-Derail Respite (not just Respite)",
"u": ["https://twitter.com/beemuvi/status/1648834061471997952",
"https://github.com/beeminder/beeminder/issues/4212"],
"d": "2023-04-18",
"t": "2023-04-19",
}, { // ------------------------------------------------------------------------
"x": "Tiny thing that hardly ever matters but we now prevent goalnames from ending in \"-thumb\" for technical reasons involving URLs for graph thumbnails",
"u": ["https://twitter.com/beemuvi/status/1649200443745275905",
"https://github.com/beeminder/beeminder/issues/2106",
"https://github.com/beeminder/beeminder/pull/4216"],
"d": "2023-04-19",
"t": "2023-04-20",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Minor improvements and clarifications to the \"Post-Derail Respite\" article, plus a stronger warning on the GTBee article about its moribundity",
"u": ["https://twitter.com/beemuvi/status/1649200801963978753",
"https://help.beeminder.com/article/18-respite",
"https://help.beeminder.com/article/63-gtbee"],
"d": "2023-04-20",
"t": "2023-04-20",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Clarification/formatting/etc for the graph settings article (especially re: restart behavior and x-min) plus a smaller tweak to the TagTime article",
"u": ["https://twitter.com/beemuvi/status/1649559701506646016",
"https://help.beeminder.com/article/105-graph-settings",
"https://help.beeminder.com/article/64-tagtime"],
"d": "2023-04-21",
"t": "2023-04-21",
}, { // ------------------------------------------------------------------------
"x": "As a follow-on for UVI#4457 we now properly handle whitespace in the email address field on signup and other places (namely, we just trim it for you)",
"u": ["https://twitter.com/beemuvi/status/1649559986564124674",
"https://github.com/beeminder/beeminder/issues/4128",
"https://github.com/beeminder/beeminder/pull/4217"],
"d": "2023-04-21",
"t": "2023-04-21",
"c": "We used to autoswallow it as you typed, which was annoying. Then we briefly complained about it and made you trim it yourself, which seemed inhospitable",
}, { // ------------------------------------------------------------------------
"x": "Added more exposition to the SMS bot's activation and stop responses (there are carrier guidelines about these things that we're now following better)",
"u": ["https://twitter.com/beemuvi/status/1650642774075785218",
"https://github.com/beeminder/beeminder/issues/4173",
"https://github.com/beeminder/beeminder/pull/4179"],
"d": "2023-03-23",
"t": "2023-04-24",
}, { // ------------------------------------------------------------------------
"x": "Integromat is now Make.com! We've updated the our integration landing page and Make's entry in our gallery, etc.",
"u": ["https://twitter.com/beemuvi/status/1650643132105752576",
"https://github.com/beeminder/beeminder/issues/3177",
"https://github.com/beeminder/beeminder/pull/4219"],
"d": "2023-04-24",
"t": "2023-04-24",
}, { // ------------------------------------------------------------------------
"x": "If you were creating an autodata goal (that needed oAuth) and used the back button, it would disable the \"next\" button and you'd be stuck! #bugfix",
"u": ["https://twitter.com/beemuvi/status/1651010480121708545",
"https://github.com/beeminder/beeminder/issues/2880",
"https://github.com/beeminder/beeminder/pull/4220"],
"d": "2023-04-24",
"t": "2023-04-25",
}, { // ------------------------------------------------------------------------
"x": "Soft launch of our Lichess integration! For intrepid users who watch our changelog, feel free to start beta testing it at http://beeminder.com/lichess",
"u": ["https://twitter.com/beemuvi/status/1651012907260608512",
"https://github.com/beeminder/beeminder/issues/4174",
"https://github.com/beeminder/beeminder/pull/4187"],
"d": "2023-04-25",
"t": "2023-04-25",
}, { // ------------------------------------------------------------------------
"x": "We added reserved usernames for various future features (beeta, android, reminders/alerts/etc) and other URL slugs that would make horrible usernames",
"u": ["https://twitter.com/beemuvi/status/1651373807893114880",
"https://github.com/beeminder/beeminder/issues/1425",
"https://github.com/beeminder/beeminder/pull/4112/files"],
"d": "2023-04-26",
"t": "2023-04-26",
}, { // ------------------------------------------------------------------------
"x": "By popular demand we added an option for which type of game to count for the Lichess integration: Blitz, Bullet, Correspondence, Classical, Rapid, or Puzzle!",
"u": ["https://twitter.com/beemuvi/status/1651374924634939392",
"https://github.com/beeminder/beeminder/issues/4174"],
"d": "2023-04-26",
"t": "2023-04-26",
}, { // ------------------------------------------------------------------------
"f": true,
"x": "Official Lichess autodata integration! Added it to the front page gallery, wrote a blog post, the whole nine yards.",
"u": ["https://twitter.com/beemuvi/status/1651733526625255425",
"https://blog.beeminder.com/lichess",
"https://www.beeminder.com/lichess",
"https://github.com/beeminder/beeminder/issues/4174"],
"d": "2023-04-26",
"t": "2023-04-27",
}, { // ------------------------------------------------------------------------
"x": "We briefly had a bug with the Lichess integration that would make authorization errors fail silently instead of loudly. #bugfix",
"u": ["https://twitter.com/beemuvi/status/1651735091423637504",
"https://github.com/beeminder/beeminder/issues/4174",
"https://github.com/beeminder/beeminder/pull/4227"],
"t": "2023-04-27",
}, { // ------------------------------------------------------------------------
"x": "Help docs: New article about the Lichess integration, plus added links on the Lichess landing page (to Lichess.org and to our blog post)",
"u": ["https://twitter.com/beemuvi/status/1652082789200834561",
"https://help.beeminder.com/article/338-lichess",
"https://github.com/beeminder/beeminder/issues/4174"],
"d": "2023-04-27",
"t": "2023-04-28",
}, { // ------------------------------------------------------------------------
"x": "We fixed an old problem with SVG sizing on Firefox with the graph previews and made the CSS more robust to such problems in the future. #bugfix #zombie",
"u": ["https://twitter.com/beemuvi/status/1652092572641411072",
"https://github.com/beeminder/beeminder/issues/3647",
"https://github.com/beeminder/beeminder/pull/4230"],
"d": "2023-04-27",
"t": "2023-04-28",
}, /* --------------------------------------------------------- end 2023apr */ ]
const batch2023may = [{
"x": "Help docs: Overhaul of our Android App article in anticipation of new Beedroid version, plus tweaks to the Beedroid Beta Testing and Permanotification articles",
"u": ["https://twitter.com/beemuvi/status/1653166636453736448",
"https://help.beeminder.com/article/62-android-app",
"https://help.beeminder.com/article/158-android-app-beta-testing",
"https://help.beeminder.com/article/125-android-notification"],
"d": "2023-04-28",
"t": "2023-05-01",
}, { // ------------------------------------------------------------------------
"x": "Help docs: Small changes to 3 articles: legacy article about Yellow Brick Half-Plane, the iOS app (BeemiOS), and Lichess",
"u": ["https://twitter.com/beemuvi/status/1653166806675386368",
"https://help.beeminder.com/article/156-ybhp",
"https://help.beeminder.com/article/60-ios-app",
"https://help.beeminder.com/article/338-lichess"],
"d": "2023-05-01",
"t": "2023-05-01",
}, { // ------------------------------------------------------------------------
"x": "We changed the \"username taken\" error to \"username taken or reserved\" since we care about being impeccably truthful about these things. #truthfetishism",
"u": ["https://twitter.com/beemuvi/status/1653546688009875459",
"https://github.com/beeminder/beeminder/issues/1425",
"https://doc.beeminder.com/truth"],
"t": "2023-05-02",
}, { // ------------------------------------------------------------------------
"x": "We've closed a loophole! If you derail two days in a row, we no longer drop the second day's charge. 🤑",
"u": ["https://twitter.com/beemuvi/status/1653548240518914049",
"https://forum.beeminder.com/t/closing-the-double-derail-loophole-its-now-possible-to-derail-2-days-in-a-row/10949",
"https://github.com/beeminder/beeminder/issues/3285",
"https://github.com/beeminder/beeminder/pull/4236"],
"d": "2023-05-02",
"t": "2023-05-02",
"c": "We should still get it right when its not a legit double-day-derail, as long as the not-legit derail happens less than 23 hours after the legit one",
}, { // ------------------------------------------------------------------------
"f": true,
"x": "Beedroid version 5! That's 5.0 of the Android app with a long list of improvements...",
"u": ["https://twitter.com/beemuvi/status/1653909972760301568",
"https://forum.beeminder.com/t/beedroid-version-5/10952"],
"t": "2023-05-03",
}, { // ------------------------------------------------------------------------
"s": true,
"n": false,
"x": "We finally restored the ability to log in w/ your Google account (phew!)",
"u": ["https://twitter.com/beemuvi/status/1653909972760301568",
"https://forum.beeminder.com/t/beedroid-version-5/10952",
"https://github.com/beeminder/beedroid/issues/23"],
"t": "2023-05-03",
}, { // ------------------------------------------------------------------------
"s": true,
"x": "The other biggest change is that we've totally redone notifications and you finally can set them on the website like all other kinds of notifications",
"u": ["https://twitter.com/beemuvi/status/1653911148817977346",
"https://github.com/beeminder/beedroid/issues/126",
"https://github.com/beeminder/beedroid/issues/220"],
"t": "2023-05-03",
"c": "And no more Android-only zeno configuration screen",
}, { // ------------------------------------------------------------------------
"s": true,
"x": "Bonus improvement with the new notifications: no more dumb permanotification (downside: notifications require an internet connection now)",
"u": ["https://twitter.com/beemuvi/status/1654272764516372480",
"https://github.com/beeminder/beedroid/issues/78"],
"t": "2023-05-04",
}, { // ------------------------------------------------------------------------
"s": true,
"x": "Lots of things look better at different font sizes and load faster and stay in sync better as you move between screens",
"u": ["https://twitter.com/beemuvi/status/1654273252875993088",
"https://github.com/beeminder/beedroid/issues/228",
"https://github.com/beeminder/beedroid/issues/200",
"https://github.com/beeminder/beedroid/issues/184",
"https://github.com/beeminder/beedroid/issues/119"],
"t": "2023-05-04",
"c": "This is one we could've milked for a lot of UVIs",
}, { // ------------------------------------------------------------------------
"s": true,
"x": "We've streamlined the settings in the app, getting rid of things like whether to vibrate for notifications. That one's built in to Android now.",
"u": ["https://twitter.com/beemuvi/status/1654630671032389635"],
"t": "2023-05-05",
"c": "Not totally sure if that's the only such thing",